Rae*_*kye 7 redirect forward zend-framework2
我认为一个常见的问题是尝试将数据转发(发布)到另一个页面.通常情况下,我会使用会话来在页面之间传递数据,但Zend中的这个前向助手看起来有潜力.有没有办法获得有关转发请求的信息?就像要求转发器一样(当没有转发器时它会正常返回null)?
如果没有当前的实施,是否可能?这将是一个有趣的项目,无论如何我永远都想要的东西.(我现在也在使用自己的BcryptDbTableAuth类,直到找到更好的解决方案).
顺便说一句,我不是在谈论添加请求参数.它应该对用户不可见.而且我还在调查变量路线(Wildcard应该可以做到这一点,但我一直得到"路线无法匹配"......将继续钻探更多)
Jur*_*man 19
"前进"有两种选择.理解php是服务器端语言处理器,用于获取传入请求并返回响应.
也就是说,第一个"前进"使用框架内转发.这意味着只有一个请求和一个响应.在框架内部,框架调用一个控制器操作,然后调用另一个.Zend Framework将此方法称为前进.
第二个"转发"是一个真正的重定向,其中第一个响应包含一个Location标头和302http状态代码.这导致第二个请求并且连续地在第二个响应中.Zend Framework将此方法称为重定向.
因此,在上面,您在问题中谈到的转发不涉及任何会话或路由匹配参数,因为对动作的第二次调用是在相同的php过程中,因此所有变量都已知.
前进的例子
转发的一个例子是使用forward控制器插件:
class MyController
{
public function myAction()
{
return $this->forward()->dispatch('MyModule\Controller\Other', array(
'action' => 'other',
'foo' => 'bar',
'baz' => new Bat()
));
}
}
Run Code Online (Sandbox Code Playgroud)
要访问:
class OtherController {
public function otherAction()
{
$foo = $this->params()->fromRoute('foo');
}
}
Run Code Online (Sandbox Code Playgroud)
您可能会注意到,可以向前向呼叫添加其他参数,包括真实对象.
重定向示例
一种选择是使用路由参数,因此您可以捕获发回的URL中的数据.因为你说你不想那样,你必须使用一个会话:
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');
}
}
Run Code Online (Sandbox Code Playgroud)