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

发布于 2024-11-07 15:03:18 字数 1131 浏览 0 评论 0原文

我知道 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 视图助手来从操作中获取 json 响应。

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

我期待感谢您的关注和帮助。 tkzalot。

I know that zend framework have some easy ways to do this,
but i didn't found a good answer or tutorial to do things according to zend.

Some answers show how to do without JSON, others without Jquery View Helper,
and others without using zend framework.

The thing is too simple
We have 2 Selects: group and subgroup
When I change group, the subgroup is populated.

This is the action:

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;
}

And this is the form

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();
}

I want to know where to put on form the request to 'getSubgroupAction' or what i have to do using jquery view helper to get the json response from the action.

Note: This is not a working example.

I antecipate my thanks for the attention and the help.
tkzalot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时常饿 2024-11-14 15:03:18

首先在 init 的 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();

在您点击数据库并获取所需数据后,在 getSubgroup 操作中对 json 和 echo 进行编码。

echo Zend_Json_Encoder::encode($result);

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

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

First in your Controller in init change your context to json.

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

If your only going to always render json then disable the layout.

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

In your getSubgroup action after you hit you DB and get the data you want encode the json and echo.

echo Zend_Json_Encoder::encode($result);

If you scroll to this action json should be displayed in your browser.

With ajax you can always go and get the json response to display where ever you want. There are other ways of doing this instead of using a controller to send the json response but this is probably the easiest way to get your link working.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文