読者です 読者をやめる 読者になる 読者になる

Piece Frameworkのテンプレートの定義済みの変数

PHP Piece

Piece Frameworkでテンプレートを記述する場合、有用な(むしろ必須の)変数がいくつか定義されています。

Dispatcher_Simple, Dispatcher_Continuationで利用可

__eventNameKey

サーバに返されるイベント名を識別するための文字列です。もっとも一般的な使い方は、次のようなものでしょう。

<!-- smartyテンプレートです -->
<input type="submit" value="Submit" name="{$__eventNameKey}_Update" />

input要素のname属性を"{__eventNameKey}_イベント名"とし、サーバに要求するイベントを指定します。

__request

Piece framework内部で使用しているリクエストオブジェクト(Piece_Unity_Request)です。
PHPの$_REQUESTとは異なり、GETまたはPOSTのパラメータしか保持していません。

Smartyの場合、次のようにして値を取得できます。

{$__request->getParameter('spam')|escape}

ここから値を取り出してテンプレート内で出力するのには注意が必要です。HTMLエスケープを明示的に行わなくてはなりません。

__session

Piece framework内部で使用しているリクエストオブジェクト(Piece_Unity_Request)です。

Smartyの場合、次のようにして値を取得できます。

{$__session->getAttribute('ham')|escape}

やはり、明示的にHTMLエスケープを行わなくてはなりません。

__basePath

dirname($_SERVER['SCRIPT_NAME'])に相当します。
例えば、http://localhost/some/path/index.phpにアクセスしている場合は、"/some/path/"となります。

__scriptName

$_SERVER['SCRIPT_NAME']に相当します。
例えば、http://localhost/some/path/index.phpにアクセスしている場合は、"/some/path/index.php"となります。

Smartyの場合、次の内容と同じです。

{$smarty.server.SCRIPT_NAME}

Dispatcher_Continuationのみで利用可

__flowExecutionTicketKey, __flowExecutionTicket

これらの変数は、サーバ側での状態保存のために使われます。典型的には、次のような使い方をします。

<form name="Form">
<input type="hidden" name="{$__flowExecutionTicketKey}" value="{$__flowExecutionTicket}" />
...
</form>
__continuation

現在のフローをあらわすオブジェクト(Piece_Flow_Continuation)です。
次のようにして、アクション内で設定したフロー属性を取得できます。

{$__continuation->getAttribute('spamegg')|escape}