0

我正在尝试设置一个视图插件来公开 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 对象是手动注入的.. 但我确信有更好的方法

4

1 回答 1

0

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

于 2012-04-15T10:24:18.710 回答