cakephp表单验证成功类/消息

时间:2012-09-18 13:28:31

标签: cakephp cakephp-2.2

我正在使用cakePHP及其默认模型验证。在错误蛋糕上添加类“错误”到我的容器div。大!但是如果一切都输入正确但是一个表单元素呢?我希望接收类“正确”的输入是正确的(可能是一条消息或图标告诉我的用户他们有多棒)。

这是我的表单创建代码:

echo $this->Form->create('User',
        array(
            'class' => 'form-horizontal',
            'inputDefaults' =>
            array(
                'format' => array('before', 'label', 'between', 'input', 'error', 'after'),
                'div' => array('class' => 'control-group'),
                'label' => array('class' => 'control-label'),
                'between' => 'div class="controls">',
                'after' => '/div>',
                'error' => array('attributes' => array('wrap' => 'span', 'class' => 'help-inline')),
                )
            )
        );

2 个答案:

答案 0 :(得分:1)

我最终做的是将/lib/Cake/View/HelperFormHelper.php复制到/app/View/Helper/FormHelper.php。然后我在第1028行修改了/app/View/Helper/FormHelper.php(在我的副本上,它是'input'函数的结尾),所以它看起来像这样:

1028:
    if ($this->_introspectModel($modelKey, 'validates', $fieldKey)) {
         $divOptions = $this->addClass($divOptions, 'required');
    }
    if($this->request->is('post')) {
        if(!$this->isFieldError($modelKey.'.'.$fieldKey)) {
        // This is the important line.
        $divOptions = $this->addClass($divOptions, 'success');
        }
    }
    if (!isset($divOptions['tag'])) {
        $divOptions['tag'] = 'div';
    }
}//end input function

答案 1 :(得分:0)

不知道这是否是最干净的方式,但它会起作用。

我会在视图中添加以下行,检查请求是否为POST。具有“control-group”类的所有字段都将采用新样式。

if($this->request->is('post')){
    echo '<style type="text/css">div.control-group { background-color:#000; }</style>';
}

由于你不想在使用类'error'的字段中显示新样式,只需在CSS文件中的样式规则之后放置!important来撤销更改。

示例'style.css':

error {
    background-color: none !important;
}