質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

2290閲覧

2つのGETアクセスを判別する方法

aae_11

総合スコア178

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

1グッド

0クリップ

投稿2019/07/31 07:56

コントローラ部分で、リクエストのあったデータに対してバリデーションをかけ、

php

1return redirect('/test1/test2')->withErrors()->withInput()->with('msg','削除しました');

として、リダイレクトし、以下web.phpのクロージャの方で処理させたい場合、どのようにweb.phpの方で通常のGETアクセスがあった場合と判別させる方法がありますでしょうか...?

Route::get('/test1/test2','TestController@display_data'); Route::get('/test1/test2',function(){ return view('practice.blade.php') );
toll_tree👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/31 08:03 編集

回答したあとであれですけど、提示のコードで起きている問題が明記されていない(そして何を調べてどう試したか分からない)ので低評価しました。 https://teratail.com/help/question-tips#questionTips3-4 そもそもそのルーティングで動きますか?
m.ts10806

2019/08/01 00:23 編集

高評価する意味が分からない質問に打ち消すようにつけられた高評価。 うん、先の質問の無言低評価といい、思い当たるユーザーの別アカウントのような気がしてきますね。PHPの技術レベルや対応の仕方も近い。思い込んでるところとか回答への理解度とか。 同一人物による複数アカウント所持はサイトの規約違反ですよ。(もし違ったとしても)ご注意を。
guest

回答1

0

同じURLに同じリクエストメソッドをあてるのは物理的にも論理的にも無理です。
パラメータつけてコントローラ側でその内容により判断するしかないのでは。

//ルーティング

php

1Route::get('/test1/test2/{param?}','TestController@display_data');

//コントローラ

php

1 public function display_data($param) 2 { 3 if($param == 'hoge'){ 4 return view('practice.blade.php'); 5 } 6 7 //~~~パラメータがないときの処理 8 } 9

リダイレクトのところ

php

1return redirect('/test1/test2/hoge')->withErrors()->withInput()->with('msg','削除しました');

投稿2019/07/31 08:01

編集2019/07/31 08:13
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/07/31 08:09

コントローラー側でリダイレクトさせる際に、任意パラメーターを「{?param}」指定することはできるのでしょうか?
m.ts10806

2019/07/31 08:15 編集

URLも単なる文字列の集合体です。それに任意なので分別のための文字列を適当に、それこそ任意に与えれば良いだけです。 任意パラメータの書き方間違っていたので編集し、コントローラの、リダイレクトの実装イメージを追記しています。 なお、未検証コードなのでコピペで動くかどうかは分かりません。 考え方を吸収して、実際の実装についてはドキュメントを確認してください。
aae_11

2019/07/31 08:41

ご回答ありがとうございます。 任意パラメータの際は、「Route::get('user/{name?}', function ($name = null) { return $name; });」このように、デフォルト値を設定しなければならないかと思ったのですが、Route::get()の第2引数にコントローラーを指定する場合は省略できるのでしょうか?
m.ts10806

2019/07/31 08:48 編集

>Route::get()の第2引数にコントローラーを指定する場合 1個大きな勘違いがあります。第2引数に指定するのは必ず実行するメソッドです。 この記述も「このコントローラのこのメソッド」と指定してますよね。 TestController@display_data もし「同じようにしたい」のでしたら、そこはPHPの関数の基礎の話と同じで(クロージャでも同じですけど) 引数の初期値を指定すれば良いだけです。 既にコメントで書いたようにあくまで「考え方を伝えるための回答」なので、あとは柔軟に対応してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問