如何覆盖CakePHP3中的表单模板?

时间:2017-02-13 13:54:25

标签: php cakephp cakephp-3.0

我在CakePHps FormHelper中覆盖默认模板时遇到了一些问题。 正如here所解释的,可以简单地使用" setTemplates" -method来使用自定义的div包装器。

然而,当我添加

$this->Form->setTemplates(['inputContainer' => '<div class="custom-class">{{content}}</div>']);

到我的模板文件,我收到一些PHP警告:

  

警告(2):substr()期望参数1为字符串,给定数组   [CORE \ src \ View \ Helper \ FormHelper.php,第2455行]

     

警告(2):explode()期望参数2为字符串,给定数组   [CORE \ src \ View \ Helper \ FormHelper.php,第2459行]

     

警告(2):array_shift()期望参数1为数组,给定为null   [CORE \ src \ View \ Helper \ FormHelper.php,第2460行]

似乎FormViewHelper中存在内部问题。 或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

正如文档中提到的,如果您使用的是先前版本而不是cakephp 3.4,请执行:

 $myTemplates = [
   'inputContainer' => '<div class="form-control">{{content}}</div>',
 ];

 // Prior to 3.4
 $this->Form->templates($myTemplates);

这适用于3.4及更高版本:

 // versions 3.4 and later
 $this->Form->setTemplates($myTemplates);

见这里(Customizing the Templates FormHelper Uses in CakePHP 3