Labo

EC-CUBE3 分室

【3.0.15】$_GETや$_POSTを取得する方法

2018年03月31日 / 投稿者名:chiharu


今回は備忘録的な内容です。
何回か使用しているのですが毎回忘れているので記事にして置いておこうと思います(笑)
 
内容は $_GET や $_POST の変数を取得する方法です。
私の場合 $_POST に関してはそれほどでもないですが、何らかのデータの引継ぎに GET を多用してしまいます。
あまり良い癖では無いと考えてはいますが時間が無い場合などに多用してしまいがちです。
 
しかし、EC-CUBE3 では $_GET や $_POST では変数の値を取得することができません。
まぁ、EC-CUBE3 というよりも Symfony2 の仕様と云うことのようです。
 
私だけかもしれませんが $_GET などの情報が取得できないのは大変つらいものがあります。
毎回調べ直すのも無駄なので記事にしてしまおうと云うだけです。
それでは記載して行きましょう。
 
ちなみに以下のソースの確認は以下のファイルにてテストしています。
 <インストールフォルダ>/src/Eccube/Controller/ProductController.php
上記ファイルにてテストを行う場合、以下のネームスペースが設定されています。

use Symfony\Component\HttpFoundation\Request;

 
上記の内容が今回の重要な役割を占めますので注意が必要です。
 
 
■ $Request 変数からの取得
 Symfony の Request を使用する場合です。
 以下の書式にて書く変数の中身が取得できます。
 本来は個別に取得する方法もあるのですが面倒なので位置で別変数に入れてから好きなように使っています。

// $_GET
$wGET = $request->query->all();
print_r( $wGET );

// $_POST
$wPOST = $request->request->all();
print_r( $wPOST );

// $_SESSION
$wSESSION = $request->getSession();
print_r( $wSESSION->all() );

// $_COOKIE
$wCOOKIE = $request->cookies->all();
print_r( $wCOOKIE );

// $_SERVER
$_SERVER = $request->server->all();
print_r( $_SERVER );

// $_FILES
$wFILES = $request->files->all();
print_r( $wFILES );

 

■ $app 変数からの取得
 $app 変数から取得する場合です。
 Request 変数が無い場合こちらから取得します。
 以下の書式にて書く変数の中身が取得できます。
 本来は個別に取得する方法もあるのですが面倒なので位置で別変数に入れてから好きなように使っています。

// $_GET
$wGET = $app['request']->query->all();
print_r( $wGET );

// $_POST
$wPOST = $app['request']->request->all();
print_r( $wPOST );

// $_SESSION
$wSESSION = $app['request']->getSession();
print_r( $wSESSION->all() );

// $_COOKIE
$wCOOKIE = $app['request']->cookies->all();
print_r( $wCOOKIE );

// $_SERVER
$_SERVER = $app['request']->server->all();
print_r( $_SERVER );

// $_FILES
$wFILES = $app['request']->files->all();
print_r( $wFILES );

 
 
基本的には情報をそのまま取得してくる流れだと思いますが $_SESSION だけは SESSION Object に格納されるようですね・・・
$_SESSION をそのまま扱ったことが無かったので気づいていなかったですね。
 
う~ん、とりあえず今回はここまでにします(笑)
次回は SESSIOM Object の内容を確認したいと思います。
ということで今回はここまでとさせて頂きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。