PHP
FuelPHP

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

しかし使い辛い。。
もっといい方法があるのかな〜