2016-05-27 1 views
0


私はyii2でスマートなテンプレートエンジンを使いたいです。
私のプロジェクトでは、データベースからビューコードをロードし、コントローラからレンダリングする必要があります。
yii2の文字列からスマートテンプレートを表示するには?

私の質問はこれです:

は、文字列からの眺めコードをレンダリングし、レンダリング共通のようにそれを制御する方法はありますか?

iは以下のようなものを必要とする:

$this->renderAsString($templateStr, ['param1'=>$val1, 'param2'=>$val2]); 

私は変数にアクセスし、index.tplファイルにコードを以下のように同じように機能することができるため、これは重要です。

$this->render('index.tpl'['param1'=>$val1, 'param2'=>$val2]); 

私はこのhttp://www.smarty.net/docs/en/resources.string.tplを読んでいますが、私の答えは違うと思います。

答えて

1

Smartyを使用してビューをレンダリングする場合は、yii2-smartyと呼ばれる別個の特別な拡張があります。実装されていません -

  • Add ability to render view from string
  • View renderer from db:あなたの特定の問題については

    return [ 
        //.... 
        'components' => [ 
         'view' => [ 
          'renderers' => [ 
           'tpl' => [ 
            'class' => 'yii\smarty\ViewRenderer', 
            //'cachePath' => '@runtime/Smarty/cache', 
           ], 
          ], 
         ], 
        ], 
    ]; 
    

    を、GitHubの上のこれらの2つの問題を見て:あなたは、その後の使用のために、このように構成し、作曲を経由してそれをインストールする必要がありますさらに

コア開発者Klimov Paulはevalを使用することを推奨しますが、Smarty専用関数でも正確にfまたはこれらの種類の状況。

例8.4。別の{eval}例

これは、サーバー名(大文字)とIPを出力します。割り当てられた 変数$strは、データベースクエリからのものであってもよい。

{eval var=$foo} 
:テンプレートがある

<?php 
$str = 'The server name is {$smarty.server.SERVER_NAME|upper} ' 
     .'at {$smarty.server.SERVER_ADDR}'; 
$smarty->assign('foo',$str); 
?> 

関連する問題