重要な注意
{include_php}
は Smarty では非推奨になりました。
プラグインを登録して使い、プレゼンテーションとアプリケーションのコードを適切に分離するようにしましょう。
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
file | string | Yes | n/a | インクルードする PHP ファイルの絶対パス |
once | boolean | No | TRUE |
同じ PHP ファイルが複数回インクルードされた場合に、一度だけインクルードするかどうか |
assign | string | No | n/a | include_php の出力を格納する変数名 |
オプションのフラグ
名前 | 概要 |
---|---|
nocache | インクルードした PHP スクリプトのキャッシュを無効にする |
{include_php}
タグを使用して、PHP スクリプトをテンプレートにインクルードします。
属性 file
のパスには、絶対パスあるいは
$trusted_dir
からの相対パスを指定することができます。セキュリティが有効な場合は、スクリプトは
セキュリティポリシーの $trusted_dir
で指定したパスに存在する必要があります。
詳細は セキュリティ の節を参照ください。
デフォルトでは、PHPファイルはテンプレート内で複数回呼ばれても一度しかインクルードしません。
once
属性によって毎回インクルードするべきかどうかを指定できます。
この属性を FALSE
に設定すると、テンプレート内でインクルードの指示がある毎に
PHP スクリプトをインクルードします。
オプションで assign
属性を渡すこともできます。
これは、{include_php}
の出力をブラウザに表示させる代わりに
変数に格納したい場合に、その変数名を指定します。
Smarty オブジェクトは、インクルードした PHP スクリプト内で
$_smarty_tpl->smarty
として使用可能です。
Example 7.52. {include_php} 関数
load_nav.php
ファイル
<?php // mysql データベースから変数の値を読み込み、それをテンプレートに割り当てます require_once('database.class.php'); $db = new Db(); $db->query('select url, name from navigation order by name'); $this->assign('navigation', $db->getRows()); ?>
テンプレート
{* 絶対パス、あるいは $trusted_dir からの相対パス *} {include_php file='/path/to/load_nav.php'} {include_php '/path/to/load_nav.php'} {* 短縮形 *} {foreach item='nav' from=$navigation} <a href="{$nav.url}">{$nav.name}</a><br /> {/foreach}
{include}
、
$trusted_dir
、
{php}
、{capture}
、テンプレートリソース および コンポーネント化したテンプレート も参照ください。