Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

{include_php}

テクニカルノート

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

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors