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