2017-03-08 11 views
0

등록 방법 공장을 통해 도우미를 보시겠습니까?등록 방법보기 도우미

namespace MyNamespace\View\Helper; 

use Zend\View\Helper\AbstractHelper; 

class TestViewHelper extends AbstractHelper 
{ 
    public function __invoke() 
    { 
     // your code... 
    } 
} 

경우 :

View\Helper\GenerateAnchor::class => GenerateAnchorFactory::class, 

답변

4

난 당신이 단지 구성 파일의 설정이 필요한 것 같아요,하지만 난 젠드 3

처음에 뷰 헬퍼를 등록에 전체 도로를 보여 드리죠, 우리는보기 도우미 필요 우리는 몇가지 의존성을 주입 할 필요가 있습니다. 그렇다면 커스텀 팩토리를 생성 할 필요가 있습니다. 그러나 뷰 헬퍼가 다른 서비스/클래스를 필요로하지 않으면이 단계를 건너 뛸 수 있습니다.

namespace MyNamespace\Factory\View\Helper; 

use Interop\Container\ContainerInterface; 
use Zend\ServiceManager\FactoryInterface; 
use Zend\ServiceManager\ServiceLocatorInterface; 
use MyNamespace\View\Helper\TestViewHelper; 

class TestViewHelperFactory implements FactoryInterface 
{ 
    /** 
    * 
    * @param ContainerInterface $container 
    * @param string $requestedName 
    * @param null|array $options 
    * @return TestViewHelper 
    */ 
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null) 
    { 
     $class = $requestedName ? $requestedName : TestViewHelper::class; 
     $auth = $container->get('MyCustomAuth'); 
     $viewHelper = new $class($auth); 

     return $viewHelper; 

    } 
    /** 
    * Provided for backwards compatibility; proxies to __invoke(). 
    * 
    * @param ContainerInterface|ServiceLocatorInterface $container 
    * @return TestViewHelper 
    */ 
    public function createService(ServiceLocatorInterface $container) 
    { 
     return $this($container, TestViewHelper::class); 
    } 
} 
,210

마지막 단계는 우리가 같이 사용할 수 있습니다 우리의 뷰 템플릿에 module.config.php

'view_helpers' => [ 
    'aliases' => [ 
     'viewPlugin' => View\Helper\TestViewHelper::class, 
    ], 
    'factories' => [ 
     View\Helper\TestViewHelper::class => InvokableFactory::class // Or use your own factory 
    ] 
], 

그리고 ... 우리의보기 도우미를 등록하는 것입니다

index.phtml

<?php echo $this->viewPlugin(); ?>