CakePHP错误消息位置
已编辑 CakePHP版本:2.2.4 当输入验证失败时,CakePHP生成的错误消息位于我的输入元素之后CakePHP错误消息位置,cakephp,cakephp-2.2,Cakephp,Cakephp 2.2,已编辑 CakePHP版本:2.2.4 当输入验证失败时,CakePHP生成的错误消息位于我的输入元素之后 <div class="control-group"> <label class="control-label">Name <span class="required-field">*</span></label> <div class="controls"> <i
<div class="control-group">
<label class="control-label">Name <span class="required-field">*</span></label>
<div class="controls">
<input name="data[User][name]" class="input-xlarge form-error" type="text" value="">
<div class="error-message">This field cannot be left blank.</div>
<input type="hidden" name="data[User][public_name]" id="UserPublicName_" value="0">
<input type="checkbox" name="data[User][public_name]" class="span1" value="1">
</div>
</div>
“复选框”输入类型应已将错误放在输入之后 但要指定确切的顺序,请在输入的
$options
数组中使用格式
键:
$this->Form->input('fieldname',
array('type'=>'checkbox',
'format'=>array('before', 'input', 'between', 'label', 'after', 'error')
));
只要更改这些数组元素的顺序以匹配您需要的内容。实际上我已经解决了它。我已经添加了
'error'=>false
,并使用$this->Form->error()将错误消息定位到我想要的位置
我的.ctp
<div class="control-group">
<label class="control-label">Nanme <span class="required-field">*</span></label>
<div class="controls">
<?php
echo $this->Form->input('name', array(
'type' => 'text', 'class' => 'input-xlarge'));
echo $this->Form->checkbox('public_name', array('class' => 'span1'));
?>
</div>
</div>
<div class="control-group">
<label class="control-label">Nanme <span class="required-field">*</span></label>
<div class="controls">
<?php
echo $this->Form->input('name', array(
'type' => 'text', 'class' => 'input-xlarge', 'error' => false));
echo $this->Form->checkbox('public_name', array('class' => 'span1'));
echo $this->Form->error('User.name', null, array('class' => 'error-message'));
?>
</div>
</div>
奶奶*
在您的控制器中,请使用下面的syntex
if($this->{$this->pageModel}->validates())
{
// your code....
}
else{
// your errors
$errors = $this->{$this->pageModel}->validationErrors;
$this->set('errors',$errors);
}
在您的ctp文件中,在下面的代码中显示错误消息
if(isset($errors) && !empty($errors['fieldname']))
{
echo $errors['fieldname'][0];
}
你能把你的ctp寄出去吗?我猜你有两个输入“name”和“public_name”。@PitsanuSwangpheaw我已经编辑了我的帖子。作为一般提示:在询问CakePHP问题时,你必须确定你使用的CakePHP版本。@sєєm sєm你是对的。谢谢。谢谢,但我不知道如何排列数组元素。此外,我希望使用“inputDefaults”,以便所有复选框都正确显示。“inputDefaults”将应用于所有input()
调用,而不仅仅是复选框。我不明白你对元素排序的问题?您可以通过设置“=>”之前--before--“,”=>”之后--“before--”和“
等的值来进行一些测试,这样您就可以看到每个值在输出中的位置。
if(isset($errors) && !empty($errors['fieldname']))
{
echo $errors['fieldname'][0];
}