2011-10-07 127 views
2

我正在越来越多的挖掘Zend_Framework,但是找到好的资源并不是那么容易,因为很多东西都来自旧版本。所以我希望能从这里找到一些输入。HowTo:Zend_Form通过ajax处理

我在寻找正确的方法来ajaxify我的Zend_Forms。有时我想通过ajax调用表单,然后通过ajax显然处理它。调用ajax表单工作正常,但即时通讯处理有点挣扎。

目前我的行动看起来像这样:

// asset/add 
public function addAction() { 
    $form = new Application_Form_Asset(); 
    if($this->getRequest()->isPost()) { 
    if($form->isValid($this->_getAllParams())) { 
     // Process to database using either Flashmessenger and redirector or view->message for success output 
    } 
    } 
    $this->view->form = $form; 
} 

现在我真的不通过,我需要在多大程度上改变这种代码的理解。基本上我想达到什么是:

  1. 呼叫通过AJAX的形式(即我能做的,ajaxContext和这样的,没问题)
  2. 过程通过AJAX的形式,太(工作也是如此,jQuery的,但处理结果是不是我想要的
  3. 结果应该是从存储到数据库

而且从点2-3的连接对象JSON是究竟在何处,我有我的问题,寻找资源在互联网上。

猜想的解决方案:我的猜测是,我需要重新排列我的控制器和表单处理的方式,我不处理addAction()内的所有内容,但只有addActions任务才能显示表单并且只有这个和processaddAction() processadd执行验证并插入数据库。但即使使用这个模型,我也没有真正看到我可以如何做json输出。

我只是在我的想法中卡住了一点。我应该查找的一些“Zendwords”可能足以让我找到我想要达到的目标,但如果有人想给我一个工作示例,我不会说不;)

在此先感谢!

回答

4

我不知道这究竟适合您的需求,但下面的教程是相当清楚的:

http://www.zendcasts.com/ajaxify-your-zend_form-validation-with-jquery/2010/04/

我使用的是思想包含有验证通过Ajax的字段(如你比如说,使用不同的validateAction),都是交互式地(当他们在浏览器中失去焦点时)和提交之前。

希望有帮助,

+0

是的,这几乎与我的猜测的解决方案齐头并进。感谢您的链接,几周前我已经观看了它,并熟悉它。我不知道为什么,但我只是希望除了创建自己的行为外,还有更多......“内置方法”来做这种事情。但我想这是它归结为:P – Sam

1

我通过在该按钮上添加一个按钮(而不是提交类型)和一个jquery点击事件来做到这一点。 验证是由验证插件为jquery服务的。

  1. Ajax调用将指向将处理数据的控制器/操作(processaddAction)。

  2. 然后得到的数据和json_encode它(返程$ JSON)

    公共职能processaddAction(){// 做等待处理 回报json_encode($的数据); }

  3. 你成功的Ajax功能将赶上JSON

    $。AJAX({ URL: “/控制器/ processaddAction”, 类型: 'POST', 数据: '数据=' + [POST DATA], 异步:假, 成功:函数(theJson){

    } });

该表格仅由Zend-FW生成。