予約変数 {$smarty}
PHP の予約変数 {$smarty} を使用すると、
環境変数やリクエスト変数にアクセスすることができます。
アクセスできる内容について、以下に説明します。
リクエスト変数
$_GET、$_POST、
$_COOKIE、$_SERVER、
$_ENV および $_SESSION
(
$request_vars_order
および
$request_use_auto_globals を参照してください)
といった リクエスト変数
にアクセスするには、下の例のようにします。
例 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}
現在の タイムスタンプ
にアクセスするには {$smarty.now} を使用します。
この値は、いわゆるエポック (1970年1月1日) からの経過秒数が含まれます。
また、これを直接
date_format
修飾子に渡して表示させることができます。実行するたびに
time()
がコールされることに注意しましょう。つまり、全体を処理するのに3秒かかるスクリプトがあったとして、
その最初と最後でそれぞれ $smarty.now
をコールすると、その値には2秒の差が生じます。
{$smarty.const}
PHP 定数の値に直接アクセスできます。smarty 定数 も参照してください。
定数を出力するテンプレート
{$smarty.config}
{$smarty.config} 変数は、読み込まれた
config 変数
を参照するのに使用できます。
{$smarty.config.foo} は
{#foo#} と同義です。詳細は
{config_load}
のページを参照してください。
{$smarty.section}、{$smarty.foreach}
{$smarty.section} 変数および
{$smarty.foreach} 変数は、
{section}
および
{foreach}
のループプロパティを参照するために使用します。
この中には .first、.index
といった有用な値が含まれます。
{$smarty.template}
現在処理中のテンプレートの名前を返します。
次の例の 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.version}
このテンプレートをコンパイルした Smarty のバージョンを返します。
<div id="footer">Powered by Smarty {$smarty.version}</div> |