我使用的应用程序ZF2 Twitter的引导。 自举模式显示包含用户的详细信息,这是我想要被编辑并保存的形式。 这是相当微不足道的,如果我只是提交表单的对话框中,并重新加载整个页面,但我正在寻找一种方法来验证形式而不会被提交,理想,如果数据是有效的,因为它通过新的数据备份页面时,模态对话框关闭。
我怎么能做到这一点 - 它会需要是一个Ajax调用? 如果是的话我会如何构建,在我的控制器的方式,误差可在模态呈现返回表单验证?
编辑1:下面的接受的答案是当场就这么远。
我无法理解的唯一的事情就是如何从控制器通过验证数据回引导模式。
因此,作为一个简单的工作流 - 模式窗口打开装有绑定到用户模型,其示出了要被编辑的的用户数据(所有预加载和分配给该视图已经)的编辑形式。 模态形式被提交时,jquery的钩到表单提交和数据作为Ajax请求UserController中:: EditUserAction发送 - 其中所述形式数据与模型验证输入过滤。 如果事实证明是有效的,该数据被保存和模态对话框关闭。 如果数据是无效的,说改变的电子邮件地址已存在的地址,操作返回JsonModel与形式的错误(S) - 这是怎么然后传递到引导模式强调的是产生错误的字段,如采埃孚在一个形式通常提交自动执行的方法是什么?
你会用Ajax做到这一点。 要了解你有什么在你的控制器做了解Ajax调用的fundementals。 jQuery让这很容易。
<script>
$(function() {
jQuery.ajax({
type: method,
dataType: 'json',
url: url,
data: data,
error: function(jqXHR, textStatus, errorThrown) {
// Do something to handle the error
},
success: function(data, textStatus, jqXHR) {
// Do something else on successful validation
}
});
});
</script>
的type
是HTTP方法(例如, 'POST'
)。 该url
是让你的控制器,这将给你一个回应的路线。 该data
是要发送的表单数据。 更多的文档是https://api.jquery.com/jQuery.ajax/
如果HTTP响应代码为200的执行成功的功能。 如果您在发送一个HTTP响应代码400的或500的,在误差函数的JavaScript将被执行。 这可以用来显示在您的模式对话框的错误。
您可以通过使用下面的代码修改控制器中的HTTP响应代码:
$this->getResponse()->setStatusCode(400);
其中400是HTTP响应代码(参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html约HTTP响应代码的详细信息)
然后,将数据发送回的响应,返回JsonModel
控制器,而不是一个ViewModel
return new JsonModel($array);
其中, $array
是数据要发送回浏览器。
如果你最终做这个有很多,你可以调查ZF2类\ Zend的\的mvc \控制器\ AbstractRestfulController。
如果你想尝试验证之前提交表单(将数据发送到服务器)。 可更好地利用客户端验证。
http://www.rayfaddis.com/blog/2013/05/27/jquery-validation-with-twitter-bootstrap