What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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}
、テンプレートリソース および コンポーネント化したテンプレート
も参照してください。