1

我正在使用 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')),
                )
            )
        );
4

2 回答 2

1

我最终做的是复制/lib/Cake/View/HelperFormHelper.php/app/View/Helper/FormHelper.php. 然后,我在第 1028 行附近修改了 /app/View/Helper/FormHelper.php (在我的副本中,它是“输入”函数的结尾),使其看起来像这样:

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

于 2012-10-02T14:26:12.393 回答
0

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

我将以下行添加到我的视图中,检查请求是否为 POST。所有具有“控制组”类的字段都将采用新样式。

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

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

示例'style.css':

error {
    background-color: none !important;
}
于 2012-09-18T15:35:31.123 回答