我正在使用zf2,我是ajax和zf2的新手。 我使用bootstrap模式打开表单作为模态对话框。 我已将初始状态值设置为-1。然后如果保存的数据那么它将变为0.如果没有,它将返回1。 因此,如果表单无效,则返回-1。
我的代码正在运行,但我不知道如何在模态中显示验证错误。
这是我在控制器中的validationAction。
public function validateinviteAction() {
$request = $this->getRequest ();
$data = $_POST ['textData'];
-> $dataform = array('email'=>$data);
-> $form = new InviteForm ();
-> $validate = new Invite ();
-> $validate->exchangeArray ( $dataform);
-> $form->setInputFilter ( $validate->getInputFilter () );
-> $form->setData ( $dataform );
$status=-1;
if ($form->isValid ()) {
$validate->exchangeArray ( $form->getData () );
$row = $this->getUsersTable ()->getUserbyemail ( $validate->email );
$reply = $this->getInviteTable ()->saveInvites ( $validate );
$status=$reply;
}
$result = new JsonModel ( array (
'status' => $status
) );
return $result;
}
这是我的ajax代码
$.ajax({
type: "POST",
url: "<?php echo $this->url('users', array('action'=>'validateinvite')); ?>",
-> data: emailtxt,
success: function(resp){
if(resp.status==0){
// if saved successfully
$("#messagesuccess").text(' The invitation sent successfully.');
document.getElementById("email").value = "";
}
else if(resp.status==1){
//if cannot save successfully
$("#messagefailed").text(' You have already sent an invitation to this person.');
}
else{
//form is not valid // if status==-1
$("#messagefailed").text(' The provided inputs are not valid.');
}
},
error: function(resp){
$("#messagefailed").text('Internet connection lost. Try again later.');
}
});
提前致谢。
答案 0 :(得分:1)
首先,请不要使用$_POST
获取数据$data = $_POST ['textData'];
$data = $this->params()->fromPost('textData');
您可以使用以下方法之一从表单中获取错误消息:
$error = $form->getMessages();
//or
$error = $form->getInputFilter()->getMessages()
$result = new JsonModel ( array (
'status' => $status ,
'error' => $error
) );
并在你的ajax中:
else{
//form is not valid // if status==-1
$("#messagefailed").text(' The provided inputs are not valid.');
alert(resp.error.join("\n"));//or however u like
}
更新:
此行是额外的而不是必需的,表单自行执行此操作
$validate->exchangeArray ( $dataform);
使用此代码使用ajax
发送表单数据data: $('#myForm').serialize()
首先检查请求是否在您的操作中发布
if($this->request->isPost())
然后获取发布数据并设置为表单
$form->setData ( $this->request->getPost());
并验证,如果$form->isValid()
,那么只需从表格中获取数据
$data = $form->getData ()