2017-01-13 4 views
2

URL :::アクションを使用していくつかの引数を設定すると、laravelによってGET要求としてキャストされることがあります。 誰もがなぜそれを制御するかを知っていますか?laravelルーター引数の振る舞い

echo URL::action('Campaign\\[email protected]',['para' => 1]),"<br>"; 
echo URL::action('Campaign\\[email protected]',['para' => 1]),"<br>"; 
echo URL::action('Campaign\\[email protected]',['para' => 1]),"<br>"; 

出力:getIndexがGETとして引数を取得します

/campaign?para=1 
/campaign/other-action/1 
/campaign/other-action2/1 

注意(?パラ= 1)

+0

あなたのルートファイルも投稿してください – Gayan

答えて

0

彼らはURLとしてそれを渡した場合、システムが他の人からgetIndexに要求を区別することはできませんので、これが起こりますセグメント。

手段

/campaign/other-action/1インデックス方法はありません

のparamとして

/campaign/other-action/1other-action/1と方法としてgetIndexに変換あなたの期待することでのparam

として1と方法としてother-actionに変換入力としてURLセグメントがあるとします。入力としてURLセグメントが必要な場合は、getパラメータとして渡す必要があり、laravelが何をしているのでしょうか。

URLはそれがget1という名前のメソッドを期待する意味/campaign/1であれば、あなたの最初のルート出力、

によります。別の例:URLは/campaign/paramシステムであれば、仲間のStackOverflow-ERSのための方法getParam

NOTEを期待する:私は実際にその理由を見つけ

+0

あなたの答えをありがとうございます、しかし、それは起こっているのではなく起こっていることを説明するようなものです。 – Tim

0

をdownvoting前に質問を考えてみましょう。あなたはルート::コントローラのメソッドを使用しているとき 、laravelを使用すると、各アクション例えば

Route::controllers([ 
     'order' => 'Order\OrderController', 
     'campaign' => 'Campaign\CampaignController' 
    ]); 

に接続された複数のパラメータを持っていると仮定します:

campaign/other-action/{VALUE1?}/{VALUE2?}/{VALUE3?}... 

あなたが['para' => 1, 'para2' => 'abc']を渡すときに、laravelが一致しようとしますアクションのパラメータ。この場合、campaign/other-action/1/abc

Route :: Controllerの使用を避けると、laravelルーターの引数の動作を制御するのに役立ちます。例えば

、routes.phpの中で:

Route::get('campaign/other-action/{id}','Campaign\[email protected]') 

あなたは

echo URL::action('Campaign\\[email protected]',['id'=>366, 'para' => 1, 'para2' => 'abc']); 

を与えるとき、あなたが欲しいものを得るでしょう:

campaign/other-action/366?para=1&para2=abc 

私はそれが役に立つと私であると思います今すぐlaravelがRoute :: controllersを5.3バージョンから削除する理由を理解してください。