0
我在提交模型中寫了一個自定義驗證方法,該方法基本上允許空白輸入字段,但是一旦某人輸入了某個內容,它就會驗證輸入的數據。CakePHP中的自定義驗證規則不能按預期工作
我提交模型內部驗證看起來是這樣的(所有其他的驗證規則,除了「說明」工作):
var $validate = array(
'title' => array(
'title' => array(
'rule' => 'notEmpty',
'required' => true,
'allowEmpty' => false,
'message' => 'Please enter a title'
),
'minLength' => array(
'rule' => array('minLength', 5),
'message' => 'Please make your title longer'
),
'maxLength' => array(
'rule' => array('maxLength', 300),
'message' => 'Your title needs to be shorter'
),
),
'description' => array(
'checkDescription' => array(
'rule' => array('validateDescription'),
'message' => 'Description must be greater than 5 characters'
),
),
'source' => array(
'source' => array(
'rule' => 'notEmpty',
'required' => true,
'allowEmpty' => false,
'message' => 'Enter a valid source URL'
),
'website' => array(
'rule' => 'url',
'message' => 'Please enter a valid source URL'
),
)
);
我的方法,這也是我在提交模型(上面的代碼下文) :
public function validateDescription($data) {
if(empty($data['Submission']['description']))
return true;
if((strlen($data['Submission']['description'])) <= 5)
return false;
}
我不知道爲什麼這根本不起作用。在我看來,我有這顯示錯誤:
if ($form->isFieldError('Submission.description'))
echo ($form->error('Submission.description', null, array('class' => 'error')));
我想這樣做的唯一原因,是因爲使用與required => false
正常驗證,並用minLength
和maxLength
驗證規則一起allowEmpty => true
沒有表現出我的意圖。
任何幫助將不勝感激! :)
這樣做了。謝謝!如果我要爲此添加另一個驗證規則,那麼如何向$ validate屬性中的'description'數組發送定製'消息'?我正在考慮做3個條件,並且改變$ message ='需要大於5個字符'或$ message ='需要小於10k個字符'並返回。 –
我要麼將它合併成一條消息(「需要在x和y之間」),要麼將其分別制定爲每條都有自己的消息的規則。 – deceze
也注意到你錯過了關鍵的「last」=> true部分 – mark