@634

リクエストの種類(POST,GET)によって、アクションの動作するメソッドを切り分ける

Advertisement

getRequestMethods, getDefaultView, Execute

リクエストの種類がGET,POSTのどちらかによって処理を振り分けたい場合の方式が、Mojaviではあらかじめ用意されている。複数のアクションや複数のメソッド、条件分岐を作成する必要はない。
主な利用用途は「初期画面表示(GET)」→「処理(POST)」というフローの画面遷移を簡単に作ること。

用途によって、動作を以下の4パターンからどれでも利用できる。
  • GETのときメソッド1、POSTのときメソッド2
  • GETのときメソッド2、POSTのときメソッド1
  • GET,POST共に、メソッド1
  • GET,POST共に、メソッド2

デフォルトの動作

デフォルトでは、GET,POST共にExecuteメソッドが実行される。
期待する動きがデフォルトの動作でよい場合、アクションクラスにはExecuteメソッドのみが定義されていればよい。
MethodSwitchAction.class.php
<?php
class MethodSwitchAction extends Action
{
    function Execute (&$controller, &$request, &$user)
    {
        return VIEW_SUCCESS;
    }
?>

条件分岐

次のようにアクションクラス内のメソッドを定義する。
  • Execute(&$controller, &$request, &$user)メソッドを実装
  • getDefaultView(&$controller, &$request, &$user)メソッドを実装
  • getRequestMethods()メソッドを実装し、REQ_POSTという定数を返却

MethodSwitchAction.class.php
<?php
class MethodSwitchAction extends Action
{
    function getDefaultView (&$controller, &$request, &$user)
    {
        print "get!";
        return VIEW_SUCCESS;
    }

    function Execute (&$controller, &$request, &$user)
    {
        print "post!";
        return VIEW_SUCCESS;
    }

    function getRequestMethods ()
    {
        return REQ_POST;
    }
?>
この場合、getでアクセスしたときはgetDefaultViewメソッドが実行され、postでアクセスしたときはExecuteメソッドが実行される。

他のパターンの処理をさせたい場合、getRequestMethods()メソッドからの返却値を以下のようにする。
処理返却値
GET:Execute, POST:Execute(デフォルト)REQ_GET|REQ_POST
GET:getDefaultView, POST:ExecuteREQ_POST
GET:Execute, POST:getDefaultViewREQ_GET
GET:getDefaultView, POST:getDefaultViewREQ_NONE

Advertisement

ショートカット

634
このカテゴリのトップページに戻る
634labs
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール