5

ZF1 では、application.ini で変数を宣言していました。

brandname = "Example"
weburl    = "http://www.example.com/"
assetsurl = "http://assets.example.com/"

そして、ブートストラップでこれを行ったので、ビューでそれらにアクセスできました

define('BRANDNAME', $this->getApplication()->getOption("brandname"));
define('WEBURL', $this->getApplication()->getOption("weburl"));
define('ASSETSURL', $this->getApplication()->getOption("assetsurl"));

これを行うZF2の方法は何ですか。次のように、local.php構成ファイルに配列を作成できることを知っています。

return array(
    'example' => array(
        'brandname' => 'Example',
        'weburl'    => 'http://www.example.com/',
        'asseturl'  => 'http://assets.example.com/',
    ),
);

コントローラーでその変数にアクセスしたいときは、次のことができます

$config = $this->getServiceLocator()->get('Config');
$config['example']['brandname']);

ここまでは順調ですが、ビューでこの変数にアクセスするにはどうすればよいですか? すべてのコントローラーでビュー変数を作成したくありません。そして、ビューphtmlファイルで上記を試すと、エラーが発生します。

Zend\View\HelperPluginManager::get was unable to fetch or create an instance for getServiceLocator

何か案は?

4

2 に答える 2

1

以前、別の投稿でこれに答えました。

/* Inside your action controller method */
// Passing Var Data to Your Layout
$this->layout()->setVariable('stack', 'overflow');

// Passing Var Data to Your Template
$viewModel = new ViewModel(array( 'stack' => 'overflow' ));


/* In Either layout.phtml or {Your Template File}.phtml */
echo $this->stack; // Will print overview

それだけです... ビュー ヘルパー、イベント マネージャー、サービス マネージャーなどをいじる必要はありません。

楽しみ!

于 2013-12-16T06:44:24.817 に答える