[ Smarty3 ] テンプレート内で $_GET や $_POST などのスーパーグローバル変数を取得する

Pocket

Smarty ではテンプレート内で $_GET や $_POST などのスーパーグローバル変数を取得することができます。ここでは、その使用例を掲載しています。

スポンサーリンク


Smary のリファレンスに記述されているサンプル

$_GET や $_POST などのスーパーグローバル変数や環境変数を取得するサンプルです。

{* ($_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}

注意

本機能は便利であるようにも見えますが、Smarty のドキュメントでも言及されている通り多用しないほうが良いと思います。テンプレートエンジン内で $_GET や $_POST 値を取得してしまっては、出力の分離という概念からかけ離れた実装と言わざるを得ません。

「 Smarty を使っているから MVC 構造なんだ。」「 フレームワークを使っているから MVC なんだ。」 と考えるのは誤りです。いくらフレームワークを使っていても上記のような機能を使っていては MVC とは言わないと思います。あくまでも、例外的に使用するもので、設計段階で使用を前提にしているようでは カオスな世界が待っていることになるはずです。

親父の小言

私を含め、大勢の「 自称オブジェクト指向の理解者 」 を見てきましたが、「 まあ、酷い有様です 」 どのような業界も同じだと思いますが、そんな感じです。

参考

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>