Я написал собственный метод проверки в моей модели представления, который в основном допускает пустое поле ввода, но как только кто-то что-то введет в него, он проверит введенные данные.
Проверка в моей модели представления выглядитвот так (все остальные правила валидации работают, кроме «описания»):
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
и allowEmpty => true
вместе справила проверки minLength
и maxLength
не работали так, как я планировал.
Любая помощь будет принята с благодарностью!:)