2

Ich mag würde meine Modulkonfiguration von einem Controller in Zend Framework 3. Ich suchte abzurufen, und es scheint, dass der normale Weg, dies in ZF2 zu tunGet Modul config in ZF3

$this->getServiceLocator() 
zu verwenden ist

, um auf die Konfiguration in module.config.php zuzugreifen. Dies funktioniert jedoch nicht in ZF3, da es keine getServiceLocator() Methode gibt.

Was ist der Standardweg, um dies zu erreichen?

+0

Dafür gibt es eine Menge Lösung. Können Sie Ihren Code teilen, damit ich ihn besser erklären kann? – tasmaniski

Antwort

1

Sie müssen Ihre Abhängigkeiten durch Service Manager injizieren. Grundsätzlich müssen Sie 2 Klasse Controller und ControllerFactory erstellen, die Controller mit allen Abhängigkeiten erstellen wird.

2

Ich weiß nicht, ob Sie eine Antwort gefunden haben, da es verschiedene Lösungen gibt, wie tasmaniski schrieb. Nur für den Fall, lassen Sie mich ein teilen, die mir sehr geholfen haben würde, wenn ich mit ZF3 zu spielen begann:

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... */ 
} 
Verwandte Themen