1

私は (PHPMustache から来た後) PHPTAL を手に入れ、ViewModel クラスの Mustache スタイルをテンプレートに挿入しようとしています。説明させてください..

コントローラ

$viewmodel = new \Viewmodel\Home();
$template = new \PHPTAL('application/views/home.html');
$template->viewmodel = $viewmodel;
echo $template->execute();

home.html <- テンプレート

<p>Hello <strong>${viewmodel/test}</strong>.</p>

Home.php <- ビューモデル クラス

namespace Viewmodel;
class Home {
    function test() {
        return "world";
    }
}

上記は機能しますが、すべての変数参照の前に「viewmodel /」を付けないようにするにはどうすればよいですか?

Mustache では、変数コンテキストを単一のクラスにすることができます。例えば。echo $template->render($html, $viewmodel);. プレフィックスは必要ありません。すべてのは疎結合のビューモデルの中にあります。クラス全体を変数名に明示的に割り当てることなく、PHPTAL でこの動作を強制したいと考えています。

4

1 に答える 1

0

要するに、いいえ。

JavaScript のwith(model){}演算子に相当するものはありません。どの変数を介して宣言し$context->set()、モデルを明示的に使用${user/name}するかを明示する必要があります${name}。最新バージョン (GitHub) はクロージャーをサポートしているため、遅延計算された変数に使用できます。

モデルへの直接アクセスを許可しておらず、ビューモデルを介してすべてのデータをプロキシしたい場合、それは Mustache の設計哲学とのインピーダンスの不一致のように見えます。

PHPTAL の MVC へのアプローチでは、ビジネス ロジックはモデル/コントローラー (顧客の口座残高の保存/操作など) によって処理され、ビュー固有のロジック (残高が負の場合は赤で表示するなど) はテンプレートに入ります。

テンプレート言語はより表現力があり、TALES 式で拡張できるため、テンプレートに表現力を追加するためにそのコミュニケーションを仲介する中間オブジェクトはありません。

<strong tal:condition="customer/isInDebt"/>

<strong tal:condition="isNegative:customer/balance"/>
于 2013-09-23T20:34:52.960 に答える