Yii 2フレームワークはAppインタフェースを提供し、postはエントリファイルを要求する.


通常Yii 2はwebアプリケーションを書くために使われ、非常に楽で、思想的にも使いやすさ的にも理想的な選択です.     ただし,webフレームワークを書く際には,controllerやactionをパラメータとしてコミットすることを考慮する必要はなく,URLアドレスに直接書き,get方式で応答を要求し,シーンを使用すると比較的制限される.     コントロールとactionは常に変化するため、appクライアントはurlの不変の部分を単独で抽出して下位メソッドに置くことを望んでいるので、コントロールまたはaction自体をパラメータとしてgetまたはpost要求する可能性があります.     なお、一般的にYii 2はCsrf制限でpostがactionのpostを指すことができないため、実際にはactionへのpostパラメータは非常に容易に実現できる.本明細書で説明するpostは、postコントローラIDとactionのIDがフレームワークに与えるエントリファイルである.
本稿では、次の2つの考え方を提供します.
一、ルーティング解析と生成規則の修正     Yii 2フレームワークのエントリファイルwebindex.phpはApplicationの生成とそのrunメソッドを構成パラメータで呼び出す2つのステップしか行わないため、エントリファイル自体には受信パラメータの操作はなく、urlアドレスをルーティング解析に渡して対応するcontrollerとactionを検索します.したがってpostでcontrollerとactionを取得するには、下位ルーティングルールを変更する必要があります.     ここでは深いソースコード解析について説明しない:Yii 2ルーティング
二、自分でエントリファイルを手書きし、Yiiに渡して処理する     この方法は相対的に、構想がはっきりしていて、操作が簡便で、ソースコードを動かさない場合、クライアントがpost方式でcontrollerとaction乃至その他のパラメータを自分に提出して、サービス側の応答を得ることができます.注:urlを少し修正したので、ルーティングパラメータ名rをIDに変更しました.     具体的な操作方法は以下の通りです.     ①自分で新しいエントリファイルindex.phpを作成する
    
    function toUrl($url){
            //   curl
            $ch = curl_init($url) ;
            //       
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
            //     CURLOPT_RETURNTRANSFER          
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
            //       
            echo curl_exec($ch) ;
    }

    function html($controllerid,$actionid,$paramArr){
        //      url
        $url = "http://api.xxxx.cn/entry.php?ID=".$controllerid."/".$actionid;
        //       ,        ,   ,        
        for($i=0;$i$paramArr);$i++){
            $paramName = $paramArr[$i];                  //     
            $paramValue = $_REQUEST[$paramName];         //     
            $url = $url."&".$paramName."=".$paramValue;  //  url  
        }
        // curl  get  
        toUrl($url);
    }

    //     post     ID
    $ID = $_REQUEST['ID'];

    //    , curl   Yii2     
    switch($ID){
        case 'creditplace':
            $paramArr = array('token');
            html('userbase',$ID,$paramArr);
        break;
        ......
    ?>

     ②変更Yii元のエントリファイルwebindex.phpファイル名:entry.php、コード自体は変更しません.
また、Yii 2はRestfulを使ってアプリを書くインターフェースも提供しています.具体的には、勉強してから更新します.