CakePHP在隐藏字段上显示验证消息

时间:2013-07-13 21:20:42

标签: forms validation cakephp

在我的表格中,我创建了一个隐藏的字段:

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?

2 个答案:

答案 0 :(得分:3)

表单助手::错误

对于未使用Form->inputForm->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 
                );