{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}、テンプレートリソース および コンポーネント化したテンプレート も参照ください。