gpt4 book ai didi

php - Zend Framework - 在 Controller 内传递变量以进行 ajax 调用

转载 作者:行者123 更新时间:2023-11-28 10:35:36 26 4
gpt4 key购买 nike

你好,在斯塔克兰!这是我的问题:

我想使用 Zend Controller 从数据库加载数组,然后将其传递给 JavaScript。我决定最好的方法是使用 ajax 向 Controller 询问它的数组,将其编码为 json,然后将其传递下去。但是,我不知道如何将我在第一个操作中加载的变量传递给通过 ajax 调用时将其传递下来的操作。

产生 View 的原始操作

public function indexAction()
{
$storeid = $this->getStoreId();

if(!$storeid)
{
$this->_forward('notfound');
return;
}

$store = $this->_helper->loadModel('stores');
$store->getByPrimary($storeid);
}

将通过ajax调用的操作

public function getdataAction()
{
$this->_helper->Layout->disableLayout(); // Will not load the layout
$this->_helper->viewRenderer->setNoRender(); //Will not render view

$jsonResponse = json_encode($store);
$this->getResponse()->setHeader('Content-Type', 'application/json')
->setBody($jsonResponse);

}

我想要的是将indexAction中的$store传递给getdataAction,以便它可以将store作为jsonResponse发送。请注意,这些是在两个不同的时间调用的。

我尝试过但没有成功的事情:

  1. 在indexAction中设置$this->getRequest()->setParam('store', $store),然后在getdataAction中使用$this->getRequest()->getParam('store')。我认为这不起作用,因为它们是不同的 http 请求,因此附加新参数是没有用的。

  2. 在 Controller 本身中使用 protected $_store,然后使用indexAction保存到它,并在getdataAction中使用它。我不太确定为什么这不起作用。

有没有一种好的方法可以以这种方式传递变量?有没有办法在不同 Controller 之间传递变量?(我假设一个 Controller 的答案就是另一个 Controller 的答案)。我可以将它存储在 Controller 助手中吗?我是否必须使用 session ,我知道它会起作用但似乎没有必要?有没有更好的方法将变量传递给javascript?我问的问题太多了吗?任何帮助都会非常出色。谢谢。

最佳答案

也许我读错了问题,但你应该能够将 $store 移动到构造函数中:

public function __construct() {
$store = $this->_helper->loadModel('stores');
$store->getByPrimary($storeid);
}

并且可以在所有 *Action 方法中访问它。使用 session 似乎不适合这个。

关于php - Zend Framework - 在 Controller 内传递变量以进行 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com