予約変数 {$smarty}

PHP の予約変数 {$smarty} を使用すると、 環境変数やリクエスト変数にアクセスすることができます。 アクセスできる内容について、以下に説明します。

リクエスト変数

$_GET$_POST$_COOKIE$_SERVER$_ENV および $_SESSION といった リクエスト変数 にアクセスするには、下の例のようにします。

例 4.8. リクエスト変数の表示


{* ($_GET) http://www.example.com/index.php?page=foo から page の内容を表示 *}
{$smarty.get.page}

{* ($_POST['page']) フォームから送信された変数"page"の値を表示 *}
{$smarty.post.page}

{* クッキーに登録された"username"の値を表示 ($_COOKIE['username']) *}
{$smarty.cookies.username}

{* サーバ変数"SERVER_NAME"の値を表示 ($_SERVER['SERVER_NAME']) *}
{$smarty.server.SERVER_NAME}

{* 環境変数"PATH"の値を表示 *}
{$smarty.env.PATH}

{* phpのセッション変数"id"の値を表示 ($_SESSION['id']) *}
{$smarty.session.id}

{* get/post/cookies/server/envの値から、変数"username"の値を表示 *}
{$smarty.request.username}

   

注意

歴史的な理由から、{$SCRIPT_NAME} には直接アクセスできます。 しかし、この値にアクセスする方法としては {$smarty.server.SCRIPT_NAME} が推奨されています。


<a href="{$SCRIPT_NAME}?page=smarty">click me</a>
<a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>

注意

Smarty では、利便性のため PHP のスーパーグローバル変数に直接アクセスすることもできます。 これを使う場合は注意が必要です。 アプリケーションのコードの構造とテンプレートとをまぜてしまうことになるからです。 必要な値だけをテンプレート変数に代入して使うのがお勧めです。

{$smarty.now}

現在の タイムスタンプ にアクセスするには {$smarty.now} を使用します。 この値は、いわゆるエポック (1970年1月1日) からの経過秒数が含まれます。 また、これを直接 date_format 修飾子に渡して表示させることができます。実行するたびに time() がコールされることに注意しましょう。つまり、全体を処理するのに3秒かかるスクリプトがあったとして、 その最初と最後でそれぞれ $smarty.now をコールすると、その値には2秒の差が生じます。


{* date_format 修飾子を用いて、現在の日付と時刻を表示します *}
{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}

   

{$smarty.const}

PHP 定数の値に直接アクセスできます。smarty 定数 も参照してください。


<?php
// php で定義されている定数
define('MY_CONST_VAL','CHERRIES');
?>

定数を出力するテンプレート


{$smarty.const.MY_CONST_VAL}

注意

Smarty では、利便性のため PHP の定数に直接アクセスすることもできます。 しかし通常は避けたほうがよいでしょう。 アプリケーションのコードの構造とテンプレートとをまぜてしまうことになるからです。 必要な値だけをテンプレート変数に代入して使うのがお勧めです。

{$smarty.capture}

組み込みの {capture}..{/capture} 関数でキャプチャしたテンプレートの出力にアクセスするには {$smarty.capture} 変数を使用します。 詳細は {capture} のページを参照してください。

{$smarty.config}

{$smarty.config} 変数は、読み込まれた config 変数 を参照するのに使用できます。 {$smarty.config.foo}{#foo#} と同義です。詳細は {config_load} のページを参照してください。

{$smarty.section}

{$smarty.section} 変数は、 {section} のループプロパティを参照するために使用します。 この中には .first.index といった有用な値が含まれます。

注意

{$smarty.foreach} 変数はもはや使われておらず、新しい {foreach} 構文になりました。しかし、Smarty 2.x 形式の foreach 構文もサポートしています。

{$smarty.template}

現在処理中のテンプレートの名前 (ディレクトリを含まない) を返します。

{$smarty.template_object}

現在処理中のテンプレートのテンプレートオブジェクトを返します。

{$smarty.current_dir}

現在処理中のテンプレートのディレクトリ名を返します。

{$smarty.version}

このテンプレートをコンパイルした Smarty のバージョンを返します。


<div id="footer">Powered by Smarty {$smarty.version}</div>

{$smarty.block.child}

子テンプレートのブロックのテキストを返します。 テンプレートの継承 を参照ください。

{$smarty.block.parent}

親テンプレートのブロックのテキストを返します。 テンプレートの継承 を参照ください。

{$smarty.ldelim}, {$smarty.rdelim}

これらの変数を使用して、左右のデリミタをそのまま表示します。 {ldelim}、{rdelim} と同じです。

PHP から割り当てられた変数 および 設定ファイルから読み込まれた変数 も参照ください。