gpt4 book ai didi

redirect - 是否可以将数据转发到 Zend 2 中的另一个 Controller /操作?

转载 作者:行者123 更新时间:2023-12-04 09:41:15 25 4
gpt4 key购买 nike

我认为一个常见的问题是试图将数据转发(发布)到另一个页面。通常,我会使用 session 在页面之间传递数据,但是 Zend 中的这个前向助手看起来很有潜力。有没有办法获取有关转发请求的信息?就像要求转发器一样(如果没有转发器,它通常会返回 null)?

如果没有当前的实现,有可能吗?这将是一个有趣的项目,无论如何我一直想要的东西。 (我目前也在使用我自己的 BcryptDbTableAuth 类,直到找到更好的解决方案)。

顺便说一下,我不是在谈论添加请求参数。它应该对用户不可见。而且我仍在研究可变路线(通配符应该可以解决问题,但我不断收到“路线无法匹配”的消息......会再深入研究一下)

最佳答案

“转发”有两种选择。理解 php 是作为服务器端语言的处理器,用于获取传入的请求并返回响应。

也就是说,第一个“转发”使用框架内转发。这意味着只有一个请求和一个响应。框架在内部调用一个 Controller 操作,然后再调用另一个。 Zend Framework 调用此方法 转发 .

第二个“转发”是真正的重定向,其中第一个响应包含 Location标题和 302 http 状态码。这会导致第二个请求并连续出现第二个响应。 Zend Framework 调用此方法 重定向 .

因此,在上面,您在问题中谈论的转发不涉及任何 session 或路由匹配参数,因为对操作的第二次调用是在同一个 php 进程中,因此所有变量都是已知的。

转发示例

转发的一个例子是使用 forward Controller 插件:

class MyController
{
public function myAction()
{
return $this->forward()->dispatch('MyModule\Controller\Other', array(
'action' => 'other',
'foo' => 'bar',
'baz' => new Bat()
));
}
}

访问:
class OtherController {
public function otherAction()
{
$foo = $this->params()->fromRoute('foo');
}
}

您可能会注意到,可以向前向调用添加其他参数,包括真实对象。

重定向示例

一种选择是使用路由参数,以便您在发回的 url 中捕获数据。因为您说您不想要那样,所以您必须为此使用 session :
use Zend\Session\Container;

class MyController
{
public function myAction()
{
$session = new Container('MyContainer');
$session->foo = 'bar';
$session->baz = 'bat';

return $this->redirect()->toRoute('my/other/route');
}
}

关于redirect - 是否可以将数据转发到 Zend 2 中的另一个 Controller /操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14180839/

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