如何在ZF2 View Helper中使用toRoute

时间:2015-05-14 10:22:29

标签: zend-framework2 zend-view

我真的不想问这个问题,但现在我无能为力。我想在视图助手中使用toRoute或redirect控制器插件。我知道View帮助器在视图层上扩展了功能,并且在整个应用程序中具有可重用性。控制器插件扩展了控制器层的功能。但我想要任何其他解决方案。

这是我的助手:

<?php

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\ServiceManager\ServiceLocatorAwareInterface;  
use Zend\ServiceManager\ServiceLocatorInterface;  

class GetSiteSettings extends AbstractHelper implements ServiceLocatorAwareInterface {

    protected $serviceLocator;

    /**
     * Set the service locator.
     *
     * @param ServiceLocatorInterface $serviceLocator
     * @return CustomHelper
     */
    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
    {
        $this->serviceLocator = $serviceLocator;
        return $this;
    }
    /**
     * Get the service locator.
     *
     * @return \Zend\ServiceManager\ServiceLocatorInterface
     */
    public function getServiceLocator()
    {
        return $this->serviceLocator;
    }

    public function __invoke()
    {
        $redirect = $this->redirect()->toRoute('my_account');
        /*$sm   = $this->getServiceLocator()->getServiceLocator();
        $config = $sm->get('Config');
        return  $config['site_settings'];*/
    }
}

?>

在上面的代码中,行:

$redirect = $this->redirect()->toRoute('my_account');

真的不起作用,我也尝试了太多的事情来完成它,但没有任何帮助。有没有人知道解决方案。

感谢。

1 个答案:

答案 0 :(得分:1)

我已经掌握了它。我们可以获得控制器插件管理器服务,然后使用任何插件。

$sm       = $this->getServiceLocator()->getServiceLocator();
$redirect = $sm->get('ControllerPluginManager')->get('redirect');
$redirect->toRoute('my_account')