Я новичок в Zend 2. Я создал регистрационную форму и использую плагин проверки формы jQuery для ее проверки. Теперь я хочу проверить, существует ли почта или нет (с плагином zend 2 и jQuery). Может ли кто-нибудь помочь мне реализовать это.
$ ('. register-form'). validate ({rules: {
email: {
required: true,
email: true,
remote: {
url: baseUrl+'/login/emailcheck',
type: 'POST',
data: {
mail: function(){ return $("#email").val(); }
},
}
},
},
messages: { // custom messages
email: {
required: "Email is required.",
remote: 'Email already Exists.'
},
},
});
и в Logincontroller,
public function emailcheckAction() {
$email = $_POST['mail'];
$result = $this->getRegistrationInfoTable()->getEmail($email);
if($result){
$value = false; //'Email already exists';
}else{
$value = true;
}
$result = new JsonModel(array(
'response' => $value
));
return $result;
}
и я отредактировал jquery.validate.js, чтобы ответить на массив json. Теперь он работает отлично :)
Я не знаю о jQUery.FormValidation, но я знаю, как я буду говорить об этой функции. И это в основном то же, что и в ZF1.
Я бы написал собственное действие, например partialValidationAction()
которому задан element
параметра. Теперь к этому действию вы POST
свою форму. Внутри действия тогда, так как данный параметр element
, вы бы установить validationGroup
вашей формы только этого одного элемента, а затем вы бы проверить форму.
Затем действие просто вернет true
если элемент проверен, и JSON-Object, содержащий сообщения об ошибках, если он вернет значение false. Поэтому всякий раз, когда вы получаете JSON-Object с сообщениями об ошибках, добавьте их в свой элемент формы, и все готово.
Я бы сделал это так по нескольким причинам, а один из них - ремонтопригодность. IIRC, что formValidation из jQuery требует, чтобы правила устанавливались в JS-коде, верно? Это означало бы, что вам нужно будет поддерживать свои Правила валидации в двух разных местах, что обычно плохо, и в значительной степени всегда приводит к несоответствию правил.