ViewModel の場合、読み込むテンプレートの指定が少し特殊だったのでメモ
テストとして言語ファイルを読み込んで出力してみる。
まず、設定に parser を追加
app/config/config.php
<?php
// ..
'always_load' = array(
'packages' => array(
'parser',
)
);
// ..
読む込む言語ファイルはこちら
app/lang/ja/test.php
<?php
return array(
'label' => array(
'hoge' => 'Hoge!',
'fuga' => 'Fuga!',
);
);
出力したいテンプレートはこちら
app/views/welcome/index.html.twig
{{ labels.hoge }}
{{ labels['fuga'] }}
コントローラでの ViewModel の使い方はいつも通り。
app/classes/controller/welcome.php
<?php
class Controller_Welcome extends Controller
{
public function before()
{
\Lang::load('test');
}
public function action_index()
{
return \Response::forge(\ViewModel::forge('welcome/index'));
}
}
ViewModel はこちら
app/classes/model/welcome/index.php
<?php
class View_Welcome_Index extends \ViewModel
{
protected $_view = 'welcome/index.html.twig';
public function view()
{
$this->labels = array(
'hoge' => __('label.hoge'),
'fuga' => __('label.fuga')
);
}
}
しかし使い辛い。。
もっといい方法があるのかな〜