在 Zend Framework 2 中设置视图插件的最佳方法是啥?

Posted

技术标签:

【中文标题】在 Zend Framework 2 中设置视图插件的最佳方法是啥?【英文标题】:What is the best way to setup a view plugin in Zend Framework 2?在 Zend Framework 2 中设置视图插件的最佳方法是什么? 【发布时间】:2012-04-13 08:11:24 【问题描述】:

我正在尝试设置一个视图插件来公开 Zend Framework 2 中的路由匹配。 插件是这样的:

class GetRouteMatch extends AbstractHelper

    /**
    * Route match returned by the router.
    * 
    * @var RouteMatch.
    */
    protected $routeMatch;

    /**
    * Set route match returned by the router.
    * 
    * @param  RouteMatch $routeMatch
    * @return self
    */
    public function setRouteMatch(RouteMatch $RouteMatch)
    
        $this->routeMatch = $RouteMatch;
        return $this;
    

    public function __invoke($param)
    
        return $this->routeMatch->getParam($param, false);
    

设置 RouteMatch 对象的最佳方法是什么? 我必须在模块引导程序或控制器中执行此操作?

目前我已经在控制器操作中以这种方式解决了

$renderer = $this->getLocator()->get('Zend\View\Renderer\phpRenderer');
$routeMatch = $renderer->plugin('routeMatch');
$routeMatch->setRouteMatch($this->getEvent()->getRouteMatch());

RouteMatch 对象是手动注入的。但我确信有更好的方法

【问题讨论】:

我认为这是一种优雅的方式.. 【参考方案1】:

最好在你的模块类中初始化这样的代码。您可以在此处附加一个事件以注入路由匹配等依赖项。但是,路由匹配将很快可以注入。在服务定位器中设置路由匹配的工作正在进行中。这意味着您可以配置 DI,它将从服务定位器中提取路由匹配。那你就不用自己写这些东西了。

【讨论】:

以上是关于在 Zend Framework 2 中设置视图插件的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Zend Framework 2 中设置第一个应用程序

在 catch 块中设置对象属性时 PHPUnit 测试失败

Zend Framework:存储电子邮件模板的位置

如何在zend框架中设置cookie?

如何在 Zend Framework 2 中为局部使用共享视图脚本路径?

Doctrine Zend Form 未在帖子中设置数据