我正在使用CakePHP(2.x)开发一个应用程序,每当我创建一个表单时,我就会重用一些设置,所以我决定扩展默认的FormHelper类,如果没有其他的通过,它会自动加载默认值进入它(见下面的代码)。
<?php
class AppFormHelper extends FormHelper
{
public function input($fieldName, $options = array())
{
$defaults = array(
'class' => 'input',
'div' => array(
'class' => 'button-height block-label margin-bottom'
)
);
$options = Set::merge($defaults, $options);
return parent::input($fieldName, $options);
}
}
乍一看,在我的视图中调用它时,这似乎完全有效$this->AppForm->input('test');
。但是,当提交该表单并出现错误时,该错误不会显示在屏幕上。当调用$this->Form->input('test')
并且出现错误时,会创建一个看起来像这样的div:
<div class="error-message">This form had an error</div>
最终,我只是希望有一种简单的方法来复制FormHelper的输入选项,并认为这是正确的方法,但由于它产生了问题,我不再确定了。任何人都知道如何再次出现错误,或者有更好的解决方案为FormHelper提供默认选项。
谢谢!
答案 0 :(得分:4)
嗯,当我的评论解决了你的问题时,我冒昧地把它写成答案...... ;-)顺便说一句,我很高兴我可以帮助你!
对我而言,这似乎是一种非常合理的方法。
不确定这是否可能是问题,但您是否在整个表单中使用AppFormHelper?我经常使用自己继承自FormHelper的自定义助手,将核心助手与我的混合使用会带来一些问题,例如,如果你使用SecurityComponent。
也许类似的事情发生在这里?
答案 1 :(得分:2)
要覆盖Cake 2.0中的HtmlHelper方法,您可以简单地:
创建你的OwnHelper类,其中包含一个链接方法,它扩展了HtmlHelper,在AppController中指定:
$helpers = array('Html' => array('className' => 'OwnHelper'));
通过ADmad
答案 2 :(得分:0)
正如nIcO向我指出的,这是一个很好的解决方案,但是我没有在整个表单中使用我的AppFormHelper。所以这很好用,但请确保在整个表单中使用自定义类。