我真的不想问这个问题,但现在我无能为力。我想在视图助手中使用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');
真的不起作用,我也尝试了太多的事情来完成它,但没有任何帮助。有没有人知道解决方案。
感谢。
答案 0 :(得分:1)
我已经掌握了它。我们可以获得控制器插件管理器服务,然后使用任何插件。
$sm = $this->getServiceLocator()->getServiceLocator();
$redirect = $sm->get('ControllerPluginManager')->get('redirect');
$redirect->toRoute('my_account')