1

我可以通过模型中的这些代码更改表单验证器错误消息:

array('name, email, subject, body', 'required'
                        'message'=>'Please enter a value for {attribute}.'),

但我不知道 {attribute} 来自哪里以及如何为每个字段更改它,所以任何帮助将不胜感激。

4

3 回答 3

5

我不确定我是否理解你的问题,但你问从哪里来{attribute}

一些验证器{attribute}在您的示例中引入了占位符。如果验证失败,它们将被替换为属性名称。因此,如果没有name输入并且您message'Please enter a valid {attribute}.'错误消息将是“请输入有效名称”。

虽然{attribute}占位符可以与每个验证器一起使用,但其中一些会引入更多的占位符。例如,CStringValidator您可以使用{min},{max}{length}. 它们将分别替换为最小最大精确字符的数量。

这是一个例子:

array('firstname,lastname', 'string', 'min'=>3, 
    'tooShort'=>'Your {attribute} must contain at least {min} letters.'
),

如果用户输入的字母少于 3 个,这将给出“您的名字必须包含至少 3 个字母。 ”。这样做的好处是,如果您更改min参数,您的消息将自动更新。所以它不太容易出错。

于 2013-04-14T19:36:32.447 回答
4

使用这些:

return array(
    // name, email, subject and body are required
    array('name', 'required',
                'message'=>'Please enter a value for name.'),
    array('email', 'required',
                'message'=>'Please enter a value for email.'),
    array('subject', 'required',
                'message'=>'Please enter a value for subject.'),
    array('body', 'required',
                'message'=>'Please enter a value for body.'),
于 2013-04-14T17:36:10.513 回答
2

{attribute}取自您的函数:

    public function attributeLabels() {
    return array(
        'id' => 'ID',
        'name' => 'Name',
        'password' => 'Password',
        'email' => 'Email',

    );
}

在你的模型上。

于 2014-03-12T01:22:50.043 回答