CakePHP扩展FormHelper使得错误无法正确报告

时间:2012-05-31 23:44:18

标签: php class cakephp formhelper

我正在使用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提供默认选项。

谢谢!

3 个答案:

答案 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。所以这很好用,但请确保在整个表单中使用自定义类。