{include_php}
は Smarty ではほとんど推奨されていません。
カスタムテンプレート関数を使用すれば、同等の機能を実現できます。
{include_php}
を使用する理由がもしあるとすれば、
plugins/
ディレクトリやアプリケーションのコードから PHP 関数を完全に隔離したい場合などです。
詳細は コンポーネント化したテンプレートの例
を参照してください。
属性名 | 型 | 必須 | デフォルト | 概要 |
---|---|---|---|---|
file | string | Yes | n/a | インクルードする PHP ファイル名 |
once | boolean | No | TRUE |
同じ PHP ファイルが複数回インクルードされた場合に、一度だけインクルードするかどうか |
assign | string | No | n/a | include_php の出力を格納する変数名 |
{include_php}
タグを使用して、PHP スクリプトをテンプレートにインクルードします。
$security
が有効な場合は、PHP スクリプトは $trusted_dir
で指定されたディレクトリに存在する必要があります。{include_php}
タグには file
属性が必須で、
ここにはインクルードする PHP ファイルへのパスを指定します。
このパスは $trusted_dir
からの相対パスか絶対パスのいずれかとなります。
デフォルトでは、PHPファイルはテンプレート内で複数回呼ばれても一度しかインクルードしません。
once
属性によって毎回インクルードするべきかどうかを指定できます。
この属性を FALSE
に設定すると、テンプレート内でインクルードの指示がある毎に
PHP スクリプトをインクルードします。
オプションで assign
属性を渡すこともできます。
これは、{include_php}
の出力をブラウザに表示させる代わりに
変数に格納したい場合に、その変数名を指定します。
Smarty オブジェクトは、インクルードした PHP スクリプト内で
$this
として使用可能です。
Example 7.21. {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'} {foreach item='nav' from=$navigation} <a href="{$nav.url}">{$nav.name}</a><br /> {/foreach}
{include}
、
$security
、
$trusted_dir
、
{php}
、{capture}
、テンプレートリソース および コンポーネント化したテンプレート
も参照してください。