2

在我的项目中,我创建了一个 ViewHelper,以在每个页面上显示一个表单。如果用户提交表单,则发布信息总是发布到同一个控制器。控制器处理完帖子后,用户应该重定向到他提交表单的页面。

要动态重定向,我想通过隐藏元素提交控制器和操作。但我不知道如何在 ViewHelper 中设置它们。我试过了InjectApplicationEventInterface,但是我的成员变量是空的,所以我猜它只适用于控制器而不是助手。

那么如何访问 RouteMatch 对象呢?

4

1 回答 1

2

Zend\View\HelperPluginManager是保存视图助手的服务定位器,它不包含应用程序事件初始化器的实例,但它具有对主服务定位器的引用,因为它是一个插件管理器。考虑在您的助手中实现以下内容:

public function __construct(\Zend\Mvc\MvcEvent $mvcEvent)
{
    // injecting the mvc event, since $mvcEvent->getRouteMatch() may be null
    $this->mvcEvent = $mvcEvent;
}

然后,在您的模块getViewHelperConfig(的实现ViewHelperProviderInterface)中,您定义以下内容:

public function getViewHelperConfig()
{
    return array(
        'factories' => array(
            'myHelper' => function (\Zend\ServiceManager\AbstractPluginManager $pm) {
                 $application = $pm->getServiceLocator()->get('Application');

                 return new MyViewHelper($application->getMvcEvent());
            },
        ),
    );
}
于 2013-02-11T12:50:53.653 回答