我有一个"特殊"的要求。几天前我开始使用CakePHP 2.2.4,现在我正在使用表单助手开发一些小表单。
我看到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。
这个类只改变输入文本的边框设置为红色。
这可能吗?
谢谢!
如果出现错误,为什么需要更改输入的类?
您可以使用已添加到外部div的类来定位输入。
。
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中
您可以创建自己的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);
}
}
思考你的问题的逻辑:
"如果有错误,我希望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网站....