2016-11-01 6 views
-3

、識別子を期待(T_STRING):コードの

Parse error: syntax error, unexpected '$this' (T_VARIABLE), expecting identifier (T_STRING) in /vagrant/lib/Cake/Console/Templates/default/views/index.ctp on line 27 

コンテキストここでエラーが発生しても、私には問題はないようです。

<? 
foreach ($fields as $field): 
    if (!in_array($field, array('created', 'body', 'description', 'position', 'slug'))) { 
    echo "\t\t<th><?php echo $this->Paginator->sort('{$field}'); ?></th>\n"; 
    } 
endforeach; 
?> 

は、それはそれべき実行コードなどの文字列で生成する必要があるコードを解釈しようとしているので、問題を抱えているように見えるので、ソート文字列「の$ this - > Paginator-を>(考えています。 ..) 'は、関数を呼び出すオブジェクト変数などです。

私はVagrantボックスのUbuntu Trusty x64でPHP 5.3.37-1を実行しています。 PHPスクリプトを開き、ときPHPのうちエコーする<?=を使用する<?

使用<?php

+1

'echo'の中に' echo'があります。あなたは本当にそれがこのように動作すると思いますか? –

+0

@u_mulderはい、それはそのように動作し、CakePHPベークテンプレートはPHP /テンプレートファイルを生成します。 – ndm

答えて

0

は短いタグを使用しないでください。

他の人が言っているように、単純な構文エラーです。構文エラーの表示に問題がある場合や、ログに記録されていることを理解している場合は、これらの間違いを強調するのに役立つIDEの使用を検討してください。

<?php 
foreach ($fields as $field) { 
    if (!in_array($field, array('created', 'body', 'description', 'position', 'slug'))) { 
     echo "\t\t<th>" . $this->Paginator->sort($field) . "</th>\n"; 
    } 
} 
?> 
+0

短いタグは実際には使用すべきではありませんが、この場合でも問題はありません。また、コードはPHPコードをエコーすることになっています.CakePHPのベークテンプレートはPHP /テンプレートを生成します。実際の問題は '$ this'のエスケープされていない' $ 'です。 – ndm

+0

決してケーキが好きではありません... – ficuscr

1

本当にコアを変更しないでください。実際には、ベンダーファイルを変更する必要はありません。カスタム焼く出力が必要な場合は、それをドキュメントで説明したように適切な方法を実行します。

Cookbook > Shells, Tasks & Console Tools > Code Generation with Bake > Modify default HTML produced by “baked” templates

言われていること、あなたが実際にエコーし、それゆえ$は特別な意味を持って、二重引用符を使用しています$あなたは、このよう\、すなわちを使用して、それをエスケープする必要があります。the original bake templateで使用されているものもある

echo "\t\t<th><?php echo \$this->Paginator->sort('{$field}'); ?></th>\n"; 

を。また、別の答えで述べたように、短い公開タグを使用しないでください!

関連する問題