在我的表格中,我创建了一个隐藏的字段:
echo $this->Form->hidden('editor_rating', array('value' => 0));
哪些输出:
在我的模型中,我创建了一个验证规则:
'editor_rating' => array(
'rule' => array('comparison', 'greater or equal', 1),
'message' => 'Please choose a valid Editor Rating'
)
当我提交表单时,隐藏字段添加了错误类,但没有可见的更改,也没有错误消息:
<input id="ListingEditorRating" class="form-error" type="hidden" value="0" name="data[Listing][editor_rating]">
如何使此错误消息可见或甚至将其附加到其他div?
答案 0 :(得分:3)
对于未使用Form->input
或Form->inputs
的用例,您可以render errors explicitly:
if ($this->Form->isFieldError('gender')) {
echo $this->Form->error('gender');
}
答案 1 :(得分:1)
好的,所以看起来没有任何内置的方法来处理我需要的东西,这是可以理解的,所以我通过检查字段的validationErrors手动处理它。
这是一个比我之前使用的editor_rating字段更清晰的例子:
(artist_picker使用jQuery自动完成来获取匹配艺术家的列表。我们想在输入中显示艺术家名称,但需要将artist_id提交给DB,因此更新隐藏字段)
echo $this->Form->hidden('artist_id', array('div' => false));
echo $this->Form->input('artist_picker', array(
'label'=> false,
'div'=> (isset($this->validationErrors['Listing']['artist_id']) ? 'span4 error' : 'span4'), // Turn on error class if errors
'class' => (isset($this->validationErrors['Listing']['artist_id']) ? 'span12 form-error' : 'span12'), // Turn on form-error class if errors
'after' => (isset($this->validationErrors['Listing']['artist_id']) ? '<div class="error-message">'.$this->validationErrors['Listing']['artist_id'][0].'</div>' : ''),
'type'=>'text') // Show error message if errors
);