【问题标题】:ZF3: Read out url parameter in PhpRendererZF3:在 PhpRenderer 中读取 url 参数
【发布时间】:2017-12-07 15:58:26
【问题描述】:

我现在想从 ZF2 升级到 ZF3,但在我的 PhpRenderer 中使用 URL 参数时遇到以下问题。

在 ZF2 中,我使用HelperPluginManager 得到Application,然后是MvcEvent,最后是routeMatch

$routeMatch = $this
   ->getHelperPluginManager()
   ->getServiceLocator()
   ->get('Application')
   ->getMvcEvent()
   ->getRouteMatch();

$parameterAction = $routeMatch->getParam('action');

在 ZF3 中,使用 getServiceLocator() 时会出现弃用警告(这是有道理的,因为它只返回来自 ServiceManager 的 creationContext)。我想找到一种不触发警告的方法。

Application 配置为工厂使用类(使用\Zend\Mvc\Service\ApplicationFactory::class)也不起作用,因为:

Zend\View\HelperPluginManager 只能创建 Zend\View\Helper\HelperInterface 和/或可调用对象的实例。

有什么方法可以在我的模板中获取 Application 上下文(或者更好的是 URL 的参数)?

【问题讨论】:

  • 最好的方法可能是获取控制器中的参数并将其分配给视图。尽可能将您的逻辑排除在视图/模板之外。

标签: php zend-framework zend-framework3


【解决方案1】:

您的问题标题是“ZF3:在 PhpRenderer 中读出 url 参数”,而在您的问题中,您又问了另一个问题。

您可以在任何控制器中获取这个(在 ZF3 中获取 URL 参数):

$URLparam = (string)$this->params()->fromQuery('parameter', '');

【讨论】:

  • 感谢您的提示。我这里不在Controller上下文中,我在View PhpRenderer中。从控制器“注入”变量到视图上下文中似乎是可能的。有没有可能直接在 PhpRenderer 中获取这些参数?
【解决方案2】:

对于 routeMatch,如果您有 MvcEvent,只需使用;

$event->getRouteMatch()

如果你有容器;

$container->getApplication()->getMvcEvent()->getRouteMatch();

如果你想在视图中访问 routeMatch,除了 tasmaniski/zend-current-route 之类的视图助手之外别无他法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2023-03-11
    • 2019-01-31
    • 2018-06-27
    相关资源
    最近更新 更多