我有一个“特殊”请求。我几天前开始使用 CakePHP 2.2.4 ,现在我正在使用Form Helper开发一些小表单。
我看到Form Helper自动管理错误(太棒了!),但我需要进行一些自定义。我知道我可以更改错误的类别(错误消息)并使用例如span
而不是div
。
但是,如果出现错误,我需要更改输入类别。
<?php
echo $this->Form->input('User.email', array(
'label' => array(
'class' => 'name-form',
'text' => 'Email:'
),
'div' => 'field',
'class' => 'input-xlarge'
)
);
?>
你可以看到我使用的课名为 input-xlarge
如果出现错误,我需要更改该类。新类应该是input-xlarge-error。
此课程仅更改输入文字的边框,将其设置为红色。
这可能吗?
谢谢!
答案 0 :(得分:2)
如果出现错误,为什么需要更改输入的类?
您可以使用已附加到外部div的类来定位输入。
E.g。
div.error input { }
如果出现错误,您可以以不同方式设置输入样式。
视图中您需要的只是:
<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('email'); ?>
<?php echo $this->Form->end('Submit'); ?>
这应该为您提供一个快速示例。提交表单,然后检查元素以查看错误类的添加位置。
你可以逃脱:
.error input { border: red; }
在CSS
中答案 1 :(得分:2)
您可以做的是创建自己的FormHelper类并覆盖addClass()方法:
class BootstrapFormHelper extends FormHelper {
public function addClass($options = array(), $class = null, $key = 'class') {
if ($class === 'error') {
$class .= ' has-error';
}
return parent::addClass($options, $class, $key);
}
}
答案 2 :(得分:1)
考虑一下你问题的逻辑:
“如果有错误,我希望div的类为x,否则为y”。
有几种方法可以实现这一点,如果您只需要根据错误翻转课程,那么FormHelper::isFieldError
就足够了......
<?php
echo $this->Form->input('User.email', array(
'label' => array(
'class' => 'name-form',
'text' => 'Email:'
),
'div' => 'field',
'class' => $this->Form->isFieldError('User.email') ? 'input-xlarge-error' : 'input-xlarge'
));
?>
上述内容不会阻止“form-error”类附加到输入。 (解决方案不在问题范围内)
我回答这个问题的原因是因为我需要在输入中专门设置错误类,以便按照我想要的方式使用bootstrap 3。这也有助于输入类在出错时被擦除。您可能还想查看我在下面链接的FormHelper::input()
可用选项。对于更复杂的错误控制,有一个FormHelper::Error
甚至更强大,你可以在cakephp网站上找到这一切....
http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html