PHP の予約変数 {$smarty}
を使用すると、
環境変数やリクエスト変数にアクセスすることができます。
アクセスできる内容について、以下に説明します。
$_GET
、$_POST
、
$_COOKIE
、$_SERVER
、
$_ENV
および $_SESSION
(
$request_vars_order
および
$request_use_auto_globals
を参照してください)
といった リクエスト変数
にアクセスするには、下の例のようにします。
Example 4.7. リクエスト変数の表示
{* ($_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.now}
を使用します。
この値は、いわゆるエポック (1970年1月1日) からの経過秒数が含まれます。
また、これを直接
date_format
修飾子に渡して表示させることができます。実行するたびに
time()
がコールされることに注意しましょう。つまり、全体を処理するのに3秒かかるスクリプトがあったとして、
その最初と最後でそれぞれ $smarty.now
をコールすると、その値には2秒の差が生じます。
{* date_format 修飾子を用いて、現在の日付と時刻を表示します *} {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
PHP 定数の値に直接アクセスできます。smarty 定数 も参照してください。
<?php // php で定義されている定数 define('MY_CONST_VAL','CHERRIES'); ?>
定数を出力するテンプレート
{$smarty.const.MY_CONST_VAL}
組み込みの
{capture}..{/capture}
関数でキャプチャしたテンプレートの出力にアクセスするには
{$smarty.capture}
変数を使用します。
詳細は
{capture}
のページを参照してください。
{$smarty.config}
変数は、読み込まれた
config 変数
を参照するのに使用できます。
{$smarty.config.foo}
は
{#foo#}
と同義です。詳細は
{config_load}
のページを参照してください。
{$smarty.section}
変数および
{$smarty.foreach}
変数は、
{section}
および
{foreach}
のループプロパティを参照するために使用します。
この中には .first
、.index
といった有用な値が含まれます。
現在処理中のテンプレートの名前を返します。
次の例の container.tpl
と、そこからインクルードしている
banner.tpl
の両方で
{$smarty.template}
を使用しています。
<b>Main container is {$smarty.template}</b> {include file='banner.tpl'}
出力は、このようになります。
<b>Main page is container.tpl</b> banner.tpl
このテンプレートをコンパイルした Smarty のバージョンを返します。
<div id="footer">Powered by Smarty {$smarty.version}</div>
これらの変数を使用して、左右のデリミタをそのまま表示します。
{ldelim}、{rdelim}
と同じです。
assigned variables および config variables も参照してください。