2015-05-14 3 views
0

Я действительно не хотел задавать этот вопрос, но теперь я не могу помочь. Я хочу использовать toRoute или перенаправить плагин контроллера в моем помощнике просмотра. Я знаю, что помощники просмотра расширяют функциональность на уровне представления и предназначены для повторного использования в нашем приложении. Плагины контроллера расширяют функциональность на уровне контроллера. Но я хочу любое другое решение.Как использовать toRoute в ZF2 View Helper

Вот мой помощник вида:

<?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

У меня это есть у меня. Мы можем получить диспетчер плагинов контроллера, а затем использовать любой плагин.

$sm  = $this->getServiceLocator()->getServiceLocator(); 
$redirect = $sm->get('ControllerPluginManager')->get('redirect'); 
$redirect->toRoute('my_account') 
Смежные вопросы