Zend 1.12 + Ajax - 提交表单
Zend 1.12 + Ajax - Submit form
用户点击提交表单后,我需要在不刷新整个页面的情况下调用该表单的 Zend 验证。我也在我的网站中使用 zend_Layout。我在这里看了很多教程,但仍然无法正常工作。
索引控制器:
class IndexController extends Zend_Controller_Action {
public function init() {
}
public function indexAction() {
$this->view->static_data = "eg. ABCDEFG";
$this->view->form = new Application_Form_Test();
}
public function ajaxAction() {
// probably some code to hande ajax
}
}
查看index/index:
...
<?php
echo date('m/d/Y h:i:s a', time());
echo $this->static_data;
?>
<hr />
<?php echo $this->form ?>
...
表格:
class Application_Form_Test extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->setAttrib('class', 'form1');
$this->addElement('text', 'email', array(
'label' => 'Your email address:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
'EmailAddress',
)
));
$this->addElement('text', 'name', array(
'label' => 'Your name:',
'required' => true,
'validators' => array(
array('validator' => 'StringLength', 'options' => array(3, 20))
)
));
// Add the submit button
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Send',
));
// And finally add some CSRF protection
$this->addElement('hash', 'csrf', array(
'ignore' => true,
));
}
}
那么我如何在不刷新该页面其余部分的情况下验证表单,并在表单无效的情况下查看 Zend 错误消息。
您可以 post 表单到您的 Ajax 操作,您将在其中实例化表单并从请求中注入数据。
$form = new Form();
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
//save data
....
}
}
$this->view->form = $form;
您有两个选择:
- 在视图中呈现表单并响应 HTML。使用 JavaScript 将当前表单替换为 Ajax 请求返回的 HTML。
使用 Zend_Form::getMessages()
获取错误消息并使用 JSON 响应。
$this-view->messages = $form->getMessages();
用户点击提交表单后,我需要在不刷新整个页面的情况下调用该表单的 Zend 验证。我也在我的网站中使用 zend_Layout。我在这里看了很多教程,但仍然无法正常工作。
索引控制器:
class IndexController extends Zend_Controller_Action {
public function init() {
}
public function indexAction() {
$this->view->static_data = "eg. ABCDEFG";
$this->view->form = new Application_Form_Test();
}
public function ajaxAction() {
// probably some code to hande ajax
}
}
查看index/index:
...
<?php
echo date('m/d/Y h:i:s a', time());
echo $this->static_data;
?>
<hr />
<?php echo $this->form ?>
...
表格:
class Application_Form_Test extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->setAttrib('class', 'form1');
$this->addElement('text', 'email', array(
'label' => 'Your email address:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
'EmailAddress',
)
));
$this->addElement('text', 'name', array(
'label' => 'Your name:',
'required' => true,
'validators' => array(
array('validator' => 'StringLength', 'options' => array(3, 20))
)
));
// Add the submit button
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Send',
));
// And finally add some CSRF protection
$this->addElement('hash', 'csrf', array(
'ignore' => true,
));
}
}
那么我如何在不刷新该页面其余部分的情况下验证表单,并在表单无效的情况下查看 Zend 错误消息。
您可以 post 表单到您的 Ajax 操作,您将在其中实例化表单并从请求中注入数据。
$form = new Form();
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
//save data
....
}
}
$this->view->form = $form;
您有两个选择:
- 在视图中呈现表单并响应 HTML。使用 JavaScript 将当前表单替换为 Ajax 请求返回的 HTML。
使用
Zend_Form::getMessages()
获取错误消息并使用 JSON 响应。$this-view->messages = $form->getMessages();