I wanted to access the application config from a view. How can I achieve that in ZF 2?
How to Access Application Config from View in Zend Framework 2 (zf2)?
Asked Answered
Actually you shouldn't need to access application config inside a view. In MVC, views just responsible for displaying/rendering data (output) and shouldn't contain any business or application logic.
If you really want to do that you can simply pass to view in your controller something like this:
<?php
namespace YourModule\Controller;
use Zend\View\Model\ViewModel;
// ...
public function anyAction()
{
$config = $this->getServiceLocator()->get('config');
$viewModel = new ViewModel();
$viewModel->setVariables(array('config' => $config ));
return $viewModel;
}
// ...
?>
So in your view.phtml file;
<div class="foo">
...
<?php echo $this->config; ?>
...
</div>
Whilst you shouldn't have business logic in your controller, configuration may still affect rendering/display logic, e.g. a configuration value tells the view what theme it should render. I still agree that it should be the controller that sends configuration values to the view—as fine grained as possible—via the ViewModel, rather than the view pulling the global configuration out of the ServiceManager for example. –
Retharethink
The "template ID" should not be in project configuration but in your models and those should be injected into the view. –
Longspur
You should create a view helper.
Config.php
<?php
namespace Application\View\Helper;
class Config extends \Zend\View\Helper\AbstractHelper
{
public function __construct($config)
{
$this->key = $config;
}
public function __invoke()
{
return $this->config;
}
}
Module.php or theme.config.php
return array(
'helpers' => array(
'factories' => array(
'config' => function ($sm) {
return new \Application\View\Helper\Config(
$sm->getServiceLocator()->get('Application\Config')->get('config')
);
},
)
),
);
Then you can use config variables in any view.
echo $this->config()->Section->key;
I created the module with controller plugin and view helper for reading a config in controllers and views. GitHub link __ Composer link
After installation via composer you can use it easily.
echo $this->configHelp('key_from_config'); //read specific key from config
$config = $this->configHelp(); //return config object Zend\Config\Config
echo $config->key_from_config;
© 2022 - 2024 — McMap. All rights reserved.
ModelService
withconfig
and you have a helper that proxy's to the Config array. You then just need to write methods for your helper that access the array, and call those in your view. – Adelaideadelaja