如何使用Jquery View Helper和JSON(ZEND)填充选择

时间:2011-05-17 15:23:03

标签: jquery ajax json zend-framework zend-form

我知道zend框架有一些简单的方法可以做到这一点, 但根据zend,我没有找到一个好的答案或教程。

一些答案​​显示如何在没有JSON的情况下执行,其他人没有Jquery View Helper, 和其他人没有使用zend框架。

事情太简单了 我们有2个选择:组和子组 当我更改组时,将填充子组。

这是行动:

public function getSubgroupAction(){

    $model = new MySubgroupModel();
    $id = $this->getRequest()->getParam('id');
    $where = "id = $id";
    $data = $model->fetchAll($where)->toArray();

    $json = Zend_Json::encode($data);
    return $json;
}

这是表格

public function init(){

    $model = new MyGroupModel();
    $options = $model->fetchAll();
    // $options receive a query with id and name

    $group = new Zend_Form_Element_Select('group');
    $group->setLabel('Chose Group')
            ->addMultiOptions($options)
            ->setRequired();

    $subgroup = new Zend_Form_Element_Select('subgroup');
    $subgroup->setLabel('Chose Subgroup')
            ->setRequired();
}

我想知道在哪里放置'getSubgroupAction'的请求,或者我需要做什么来使用jquery view helper从动作中获取json响应。

注意:这不是一个有效的例子。

我感谢你的关注和帮助。 tkzalot。

1 个答案:

答案 0 :(得分:1)

首先在Controller中的Controller中将您的上下文更改为json。

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('getSubgroup', 'json')       
->setAutoJsonSerialization(false) // or true to automatically do it for you
->initContext();

如果你只是总是渲染json,那么禁用布局。

$this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();

在点击DB并获取所需数据后,在你的getSubgroup操作中编码json和echo。

echo Zend_Json_Encoder::encode($result);

如果滚动到此操作,json应显示在浏览器中。

使用ajax,您可以随时获取json响应以显示您想要的位置。还有其他方法可以执行此操作,而不是使用控制器来发送json响应,但这可能是让链接正常工作的最简单方法。