フォーム要素で、エラーメッセージを編集しました。
$this->addElement('text', 'type', array(
'label' => 'Type: ',
'class' => 'form-control',
'placeholder' => 'type',
'required' => true,
'validators' => array(
array('validator' => 'StringLength', 'options' => array('min' => 3, 'max' => 10, 'messages' => array('stringLengthTooShort' => 'The type is too short.', 'stringLengthTooLong' => 'The type is too long.')))
,array('validator' => 'NotEmpty', 'options' => array('messages' => array('isEmpty' => 'Type is required.')))
),
));
問題は、空のフォームを送信すると、両方のメッセージが表示されることです(タイプが短すぎる+タイプが必要です)。ただし、この場合、NotEmptyエラーメッセージのみを表示する必要があり、Stringlength(最小長3)エラーメッセージは表示する必要はありません。したがって、NotEmpty検証後にminlengthを検証する必要があります。ありがとう
編集:requiredとvalidatorsの呼び出しの異なる位置と、それらのチェーンの異なる設定true / false(次のコード)を変更しようとしましたが、要素が空の場合でも両方のエラーメッセージが表示されます
$this->addElement('text', 'type', array(
'label' => 'Type: ',
'class' => 'form-control',
'placeholder' => 'type',
'validators' => array(
array('validator' => 'NotEmpty',true, 'options' => array('messages' => array('isEmpty' => 'Type is requiredDDDD.'))),
array('validator' => 'StringLength',false, 'options' => array('min' => 3, 'max' => 10, 'messages' => array('stringLengthTooShort' => 'The type is too short.', 'stringLengthTooLong' => 'The type is too long.')))
),
'required' => true,
));
あなたはこのようなことを試すことができます:
2番目のバリデーターにコメントする
$this->addElement('text', 'type', array(
'label' => 'Type: ',
'class' => 'form-control',
'placeholder' => 'type',
'required' => true,
'validators' => array(
//array('validator' => 'StringLength', 'options' => array('min' => 3, 'max' => 10, 'messages' => array('stringLengthTooShort' => 'The type is too short.', 'stringLengthTooLong' => 'The type is too long.'))),
array('validator' => 'NotEmpty', 'options' => array('messages' => array('isEmpty' => 'Type is required.')))
),
));
isValid()
関数にバリデーターを追加します。
public function isValid($data) {
$etat_valid = parent::isValid($data);
$error = $this->getElement('type')->getMessages();
if (empty($error)){
$validator = new Zend_Validate_StringLength(array(
'min' => 3,
'max' => 10,
'messages' => array('stringLengthTooShort' => 'The type is too short.',
'stringLengthTooLong' => 'The type is too long.')
)
);
$etat_valid_type = $validator->isValid($data['type']);
if (!$etat_valid_type){
$this->getElement('type')->addErrors($validator->getMessages());
}
}
return $etat_valid && $etat_valid_type;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加