【问题标题】:Get rerouted request (module, controller, action names) in plugin在插件中获取重新路由的请求(模块、控制器、操作名称)
【发布时间】:2012-02-20 18:41:03
【问题描述】:

我有一个插件 (dispatchLoopStartup) 可以检查是否允许用户在不登录的情况下访问网站的某些部分。如果他们尝试访问受限部分,他们会被转发到登录页面,如下所示:

$request->setControllerName('login');
$request->setActionName('cms');

我有另一个插件(preDispatch),它根据当前操作从数据库中检索数据。当请求已被转发到不同的操作时,此插件仍会像转发之前一样读取请求。

如何在第二个插件中获取更新的请求?

【问题讨论】:

  • 我模拟了你的情况,并在dispatchLoopStartup()插件中更改了控制器和动作名称,当访问控制器和动作名称是第二个preDispatch()插件时,它显示了更新的控制器名称和操作,而不是 URL 中的操作。你运行的是什么版本的 ZF?
  • 您好,感谢您的帮助。我正在运行 1.11.0dev,php 5.3.6
  • 你能发布一些这两个插件的代码吗?也许我可以试试你的代码?

标签: php zend-framework plugins


【解决方案1】:

我犯了一个愚蠢的错误。我通过$request->getParams() 访问模块/控制器/操作而不是:

echo $request->getModuleName().'/'
    .$request->getControllerName().'/'
    .$request->getActionName().'/';

getParams() 提前返回了参数,这就是我感到困惑的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多