{include_php} - PHPプロ!マニュアル

Smartyマニュアル

- {include_php}

{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 として使用可能です。

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

閲覧履歴



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報