我知道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。
答案 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响应,但这可能是让链接正常工作的最简单方法。