[Ethna] Post/Getの使い分けについて

Ethnaでは、HTTPプロトコルがGETなら$_GETを、POSTなら$_POSTをパラメータ(いわゆるフォーム値)として使うので、 $_GETと$_POSTをマージして使うことは基本的にできません。

例えば、

http://example.com/index.php?action_foo=true
に対してPOSTパラメータを投げるというようなことはできません。

GETなら$_GETのみ、POSTなら$_POSTのみにパラメータを統一するしかないようです。

つまり、
http://example.com/index.php?action_foo=true&key=val
とするか、
http://example.com/index.php
POSTパラメータ:action_foo=true&key=val
とするか、どちらかにする必要があります。

この辺の仕組みは、Ethna_Controllerの1287行目あたりを見れば一目瞭然でした。

    /**
     *  フォームにより要求されたアクション名を返す
     *
     *  アプリケーションの性質に応じてこのメソッドをオーバーライドして下さい。
     *  デフォルトでは"action_"で始まるフォーム値の"action_"の部分を除いたもの
     *  ("action_sample"なら"sample")がアクション名として扱われます
     *
     *  @access protected
     *  @return string  フォームにより要求されたアクション名
     */
    protected function _getActionName_Form()
    {

(中略)

        if ($_SERVER['REQUEST_METHOD'] == "GET") {
            $tmp_vars = $_GET;
        } else if ($_SERVER['REQUEST_METHOD'] == "POST") {
            $tmp_vars = $_POST;
        }
(このことに気づかず1時間ロスした)
カテゴリ:

人気記事