cakephp 表单验证成功类/消息
Posted
技术标签:
【中文标题】cakephp 表单验证成功类/消息【英文标题】:cakephp form validation success class/message 【发布时间】:2012-09-18 13:28:31 【问题描述】:我正在使用带有默认模型验证的 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')),
)
)
);
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:不知道这是否是最干净的方法,但它会起作用。
我会将以下几行添加到我的视图中,检查请求是否为 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;
【讨论】:
谢谢 Leandro,这行得通,但我想知道是否有任何方法可以在不修改任何 CSS 的情况下实现类似的效果,因为我之前没有提到,我使用的是 Twitter Bootstrap。将“成功”类添加到我的控制组 div 确实会产生绿色输入元素的预期结果,但样式会覆盖也应用于不正确元素的“错误”类。..以上是关于cakephp 表单验证成功类/消息的主要内容,如果未能解决你的问题,请参考以下文章
cakephp : 使用 $validate 数组验证登录表单