【问题标题】:CakePHP 2.x - Syntax errors when baking views. Parse error: syntax error, unexpected '$this' (T_VARIABLE), expecting identifier (T_STRING) [duplicate]CakePHP 2.x - 烘焙视图时出现语法错误。解析错误:语法错误,意外的“$this”(T_VARIABLE),需要标识符(T_STRING)[重复]
【发布时间】:2016-11-01 20:25:00
【问题描述】:

在尝试烘焙视图时,我总是因语法错误而停止,如下所示:

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->sort( ...)' 是调用函数的对象变量,依此类推。

我在 Vagrant box 上的 Ubuntu Trusty x64 上运行 PHP 5.3.37-1。

【问题讨论】:

  • echoecho 内。你真的认为它是这样工作的吗?
  • @u_mulder 是的,它就是这样工作的,CakePHP 烘焙模板会生成 PHP/模板文件。

标签: php cakephp cakephp-2.3 cake-bake


【解决方案1】:

您真的不应该修改核心,实际上您根本不应该修改任何供应商文件!如果您需要自定义烘焙输出,请按照文档中所述的正确方式进行操作:

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

话虽如此,您使用的是双引号,因此$ 具有特殊含义,要实际回显$,您必须使用\ 对其进行转义,即像这样:

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

这也是the original bake template 中使用的内容。另外,正如另一个答案中提到的,不要使用短的开放标签!

【讨论】:

    【解决方案2】:

    不要使用短标签:&lt;?

    使用&lt;?php打开一个PHP脚本,使用&lt;?=在PHP退出时回显。

    正如其他人所说,这是一个简单的语法错误。如果您无法看到语法错误或无法理解日志告诉您的内容,您可能需要考虑使用有助于突出这些错误的 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";
        }
    }
    ?>
    

    【讨论】:

    • 确实不应该使用短标签,但在这种情况下它们不是问题。此外,代码应该与 PHP 代码相呼应,因为 CakePHP 烘焙模板就是这样做的,它们生成 PHP/模板。实际问题是$this 中未转义的$
    • 从不喜欢蛋糕...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多