Edited at

FuelPHP で Parser ライブラリを使いつつ、ViewModel を使う

More than 5 years have passed since last update.

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


しかし使い辛い。。

もっといい方法があるのかな〜