2016-03-15 103 views
1

我正在使用ActiveForm生成我的表單。在模型中,我有同場以下規則:驗證自定義消息(對於相同的表單域)被忽略

public function rules() { 
    return [ 
     ['reviewMsg', 'required', 'message' => Yii::t('review', 'Review message cannot be blank.')], 
     ['reviewMsg', 'string', 'max' => 255, 'message' => Yii::t('review', 'Review message should contain at most 255 characters.')], 
     ]; 
    } 

現在,客戶端驗證工作正常,它反應到正確的規則。按照我指定的規則顯示了打破required規則的自定義消息。但是,第二個自定義消息(文本< = 255個字符)被忽略,而是顯示標準錯誤消息。

我在做什麼錯?

回答

3

使用tooLong屬性:

public function rules() { 
return [ 
    ['reviewMsg', 'required', 'message' => Yii::t('review', 'Review message cannot be blank.')], 
    ['reviewMsg', 'string', 'max' => 255, 'tooLong' => Yii::t('review', 'Review message should contain at most 255 characters.')], 
    ]; 
} 
+0

作品!出於好奇:爲什麼標準的'message'屬性在這種情況下失敗?我的意思是,這感覺有點不一致。 – lesssugar

+2

@lesssugar。因爲'message'只在值不是字符串時才起作用。 [詳情](http://www.yiiframework.com/doc-2.0/yii-validators-stringvalidator.html#$message-detail) –