#Laravelのviewが真っ白だ。
題名の通り、なぜかLaravelのviewが真っ白になったので、そのことについて残しておきます。ちなみに原因はめちゃめちゃ単純なことでした。
##環境
- windows10
- Laravel6
- php(7.4.6)
##やろうとしていたこと
class TestController extends Controller
{
public function index($id)
{
$users = Users::find($id);
return view('test',['users' => $users]);
}
public function post()
{
return view('test.view');
}
Route::get('/test/{id}', 'testController@index');
Route::get('/test/post', 'testController@post');
てきな記述をしていたのですが、真っ白状態です。。。。
ググっていったところ、web.phpの順番が問題そう。
Route::get('/test/post', 'testController@post');
Route::get('/test/{id}', 'testController@index');
変えてみたら、直った!
##原因
結果原因はweb.phpの順番というよりは、{id}の部分が邪魔していたそう。
最初の通り、
Route::get('/test/{id}', 'testController@index');
Route::get('/test/post', 'testController@post');
このように記載していると、最初のRouteで/test/{id}を読み込んでしまい、test/postと送っても、ルーティングでpostをidと判断してしまい、そのようなidはないため、真っ白になっていた。
そのため、順番を変えると、先にtest/postが先に読み込まれるので、viewを返したのですね。
このままでも動くのですが、何かの間違いでまたidを読み込まれてもめんどくさいので、このように直しました!
Route::get('/test/{id}', 'TravelController@showDetail')->where('id', '[0-9]+');
こうすると、idは数字しかとってこなくなり、先ほどの順番を変えても、先に読み込まれることはなくなりました。
##まとめ
以上がLaravelからのクリスマスプレゼントでした、この先も色々なプレゼント(エラー)をいただくと思いますが、ありがたく受け取ってうまく使いこなしていこうと思います。
##参考