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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

956閲覧

Laravelにおけるredirect処理に関して

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2020/06/10 04:49

発生エラー

エラー詳細

よろしくお願いいたします。

ルーティングの'/'でアクセスし、indexメソッドを呼び出し、DBを引っ張りつつlayout.blade.phpを呼び出します(名前がよくないのですが、sectionやyieldは使用しておりません。)

トップページを表示後、新規投稿より

{{ route('tops.new') }}

へアクセス。('tops.news'は'/new','TopsController@create'の呼び出しとなります。)

createメソッドを呼び出し、テーブルをオブジェクト化しつつTESTの値をそれぞれのカラムへ
格納しセーブ。
redirectで'tops.list'およびindexメソッドを再度呼び出し。
トップページへ戻る流れです。

現在正常に動作し、TEST内容も反映されるのですが、なぜかcreateメソッドのredirectを
nameでの処理ではなく以下のように記述するとエラーが発生します。(エラー内容画像アップロードしております。)

return redirect('/',['tops'=>$tops]);

こちら、nameでの呼び出し方法でも'/'表記での呼び出し方法でも変わらないと思っていたので、
なぜエラーが発生してしまうのかわかりませんでした。
アドバイスなどいただけますと幸いに存じます。

web.php

1 2use App\tops; 3use Illuminate\Support\Facades\Route; 4 5 6 7Route::get('/','TopsController@index')->name('tops.list'); 8Route::get('/article/{id}','TopsController@show')->name('tops.article'); 9Route::get('/new','TopsController@create')->name('tops.new'); 10

TopsController

1 2 public function index() 3 { 4 $tops = tops::all(); 5 return view('common.layout',['tops'=>$tops]); 6 } 7 8public function create(Request $request) { 9 10 $new = new tops; 11 $new->name='TEST'; 12 $new->job='TEST'; 13 $new->age=29; 14 $new->save(); 15 $tops = tops::all(); 16 return redirect()->route('tops.list',['tops'=>$tops]); 17} 18

HTML

1. 2(中略) 3. 4<div class="main-left"> 5<a class="btn btn-success p-5 m-5" href="{{ route('tops.new') }}">新規投稿</a> 6. 7(中略) 8. 9 <tbody> 10 @foreach ($tops as $top) 11 <tr> 12 <th class="col" scope="row">{{ $top->id }}</th> 13 <td class="ranker">{{ $top->name }}</td> 14 </tr> 15 @endforeach 16 </tbody> 17</div> 18. 19(中略) 20.

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーの内容を簡単に言うと、


おいおい、あんちゃん。
なに、第二引数に配列渡しちゃってんの?
数値渡せよゴルァ。

です。

redirectの第二引数にはリダイレクト時のHTTPステータスコードを指定します。

もしなにかしらのデータを渡したいなら、
with()で session ( flash ) でデータを持たせることが可能です。

投稿2020/06/10 06:18

編集2020/06/10 06:20
kyoya0819

総合スコア10429

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

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

kyoya0819

2020/06/10 06:22

ものすごく思った、redirectにデータを持たせなくても '/' にリダイレクトさせればいいんじゃない?と。
退会済みユーザー

退会済みユーザー

2020/06/10 08:02

ご回答のほど、ありがとうございます!! redirectの第二引数には数字HTTPステータスコードを指定とのことですが、 HTTPステータスコードというのは200,や404の数字になりますでしょうか。 すみません、理解が及ばないのですが、その場合はredirect('/','HTTPステータスコード数字') の形式になるのでしょうか?? 200などを数字として入れれば良いのか理解できておりません....... また'/'にリダイレクトさせるだけの方が良いということでその場合は以下 public function create(Request $request) { $new = new tops; $new->name='TEST'; $new->job='TEST'; $new->age=29; $new->save(); return redirect('/') } このような記述への変更を示しておりますでしょうか。
kyoya0819

2020/06/10 08:39

まず、redirectはデフォルトで302が入ってるので、特段指定する必要性はありません。 RedirectResponse.phpの__constructで第二引数で302が指定されていることがわかると思います。 また、変更に関しては当方そのように想定していますがいかがでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/10 11:19

なるほどです。まだ試していませんが、帰宅後早速確認してみます。 ご丁寧な説明大変ありがたいです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問