Я хотел бы получить конфигурацию моего модуля из контроллера в Zend Framework 3.
Я искал, и кажется, что стандартный способ сделать это в ZF2 заключается в использовании
$this->getServiceLocator()
чтобы получить доступ к конфигурации в module.config.php
,
Тем не менее, это не будет работать в ZF3, так как нет getServiceLocator()
метод.
Каков стандартный способ достижения этого?
Не знаю, нашли ли вы ответ, так как существуют разные решения, как писал Тасманиски. На всякий случай, позвольте мне поделиться тем, что очень помогло бы мне, когда я начал играть с 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... */
}
Вы должны ввести свои зависимости через сервис-менеджер.
В основном вам нужно создать 2 класса контроллер а также ControllerFactory это создаст контроллер со всеми зависимостями.