{include_php}

重要な注意

{include_php} は Smarty では非推奨になりました。 プラグインを登録して使い、プレゼンテーションとアプリケーションのコードを適切に分離するようにしましょう。 Smarty 3.1 以降、{include_php} タグは SmartyBC からしか使えなくなりました。

属性名 必須 デフォルト 概要
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 として使用可能です。

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