2017-03-08 117 views

回答

4

我猜你只需要在配置文件中的設置,但我會告訴全路在Zend的3

首先註冊視圖助手,我們需要的視圖助手:

namespace MyNamespace\View\Helper; 

use Zend\View\Helper\AbstractHelper; 

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

如果我們需要注入一些依賴關係,然後我們需要創建自定義工廠,但是如果我們的視圖助手不需要其他服務/類,那麼我們可以跳過這一步

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); 
    } 
} 

最後一步是註冊我們的視圖助手在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(); ?>