4

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

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?

4

2 回答 2

3

表单助手::错误

对于使用Form->inputForm->inputs不使用的用例,您可以显式呈现错误

if ($this->Form->isFieldError('gender')) {
    echo $this->Form->error('gender');
}
于 2013-07-15T22:00:13.213 回答
1

好的,所以看起来没有任何内置方法可以处理我需要的东西,这是可以理解的,所以我通过检查该字段的 validationErrors 来手动处理它。

这是一个比我以前使用的 editor_rating 字段更简洁的示例:

(artist_picker 使用 jQuery 自动完成来获取匹配的艺术家列表。我们希望在输入中显示艺术家名称,但需要将艺术家 ID 提交到数据库,因此更新隐藏字段)

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 
                );
于 2013-07-15T17:27:47.377 回答