2

我想從控制器檢索的Zend我的模塊配置框架3. 我搜查,似乎在ZF2做到這一點的標準方法是使用獲取模塊配置在ZF3

$this->getServiceLocator() 

訪問module.config.php中的配置。 但是,這不適用於ZF3,因爲沒有getServiceLocator()方法。

實現此目標的標準方法是什麼?

+0

對此有很多解決方案..你可以分享你的代碼,這樣我可以更好地解釋嗎? – tasmaniski

回答

1

您需要通過服務管理器注入您的依賴關係。 基本上你需要創建2個類控制器ControllerFactory這將創建具有所有依賴關係的控制器。

2

不知道你是否找到答案,因爲tasmaniski寫道有不同的解決方案。爲以防萬一,讓我分享一個會幫了我很多,當我開始與ZF3玩:

MyControllerFactory.php

<?php 
namespace My\Namespace; 

use Interop\Container\ContainerInterface; 
use Zend\ServiceManager\Factory\FactoryInterface; 
use DependencyNamespace\...\ControllerDependencyClass; // this is not a real one of course! 

class MyControllerFactory implements FactoryInterface 
{ 
    /** 
    * @param ContainerInterface $container 
    * @param string $requestedName 
    * @param null|array $options 
    * @return AuthAdapter 
    */ 
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null) 
    { 
     // Get config. 
     $config = $container->get('configuration'); 

     // Get what I'm interested in config. 
     $myStuff = $config['the-array-i-am-interested-in'] 

     // Do something with it. 
     $controllerDepency = dummyFunction($myStuff); 

     /*...the rest of your code here... */ 

     // Inject dependency. 
     return $controllerDepency; 
    } 
} 

MyController.php

<?php 
namespace My\Namespace; 

use Zend\Mvc\Controller\AbstractActionController; 
use DependencyNamespace\...\DependencyClass; 

class MyController extends AbstractActionController 
{ 
    private $controllerDepency; 

    public function __construct(DependencyClass $controllerDepency) 
    { 
     $this->controllerDepency = $controllerDepency; 
    } 

    /*...the rest of your class here... */ 
}