-3

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

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。

4

2 回答 2

1

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

食谱 > 外壳、任务和控制台工具 > 使用 Bake 生成代码 > 修改由“烘焙”模板生成的默认 HTML

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

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

这也是原始烘焙模板中使用的内容。另外,正如另一个答案中提到的,不要使用短的开放标签!

于 2016-11-01T21:23:01.227 回答
0

不要使用短标签:<?

用于<?php打开 PHP 脚本并<?=在退出 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";
    }
}
?>
于 2016-11-01T20:38:09.893 回答