6

我想从视图访问应用程序配置。我怎样才能在 ZF 2 中实现这一点?

4

3 回答 3

9

实际上,您不需要在视图中访问应用程序配置。在 MVC 中,视图只负责显示/渲染数据(输出),不应包含任何业务或应用程序逻辑。

如果您真的想这样做,您可以简单地传递给控制器​​中的视图,如下所示:

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

// ...
?>

所以在你的 view.phtml 文件中;

<div class="foo">
 ...
 <?php echo $this->config; ?>
 ...
</div>
于 2013-05-14T14:47:12.907 回答
8

您应该创建一个视图助手。

配置文件

<?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 或 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')
            );
        },
    )
),
);

然后您可以在任何视图中使用配置变量。

echo $this->config()->Section->key;
于 2013-09-05T09:59:03.063 回答
0

我创建了带有控制器插件和视图助手的模块,用于读取控制器和视图中的配置。GitHub 链接__ Composer 链接

通过作曲家安装后,您可以轻松使用它。

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;
于 2015-10-03T12:57:54.550 回答