3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Laravel]早めのクリスマスviewが真っ白問題

Posted at

#Laravelのviewが真っ白だ。
題名の通り、なぜかLaravelのviewが真っ白になったので、そのことについて残しておきます。ちなみに原因はめちゃめちゃ単純なことでした。

##環境

  • windows10
  • Laravel6
  • php(7.4.6)

##やろうとしていたこと

TestController.php

class TestController extends Controller
{
  public function index($id)
  {
   $users = Users::find($id);

   return view('test',['users' => $users]);
  }

  public function post()
  {
   return view('test.view');
  }
web.php

Route::get('/test/{id}', 'testController@index');

Route::get('/test/post', 'testController@post');

てきな記述をしていたのですが、真っ白状態です。。。。
ググっていったところ、web.phpの順番が問題そう。

web.php

Route::get('/test/post', 'testController@post');

Route::get('/test/{id}', 'testController@index');

変えてみたら、直った!

##原因

結果原因はweb.phpの順番というよりは、{id}の部分が邪魔していたそう。
最初の通り、

web.php

Route::get('/test/{id}', 'testController@index');

Route::get('/test/post', 'testController@post');

このように記載していると、最初のRouteで/test/{id}を読み込んでしまい、test/postと送っても、ルーティングでpostをidと判断してしまい、そのようなidはないため、真っ白になっていた。
そのため、順番を変えると、先にtest/postが先に読み込まれるので、viewを返したのですね。
このままでも動くのですが、何かの間違いでまたidを読み込まれてもめんどくさいので、このように直しました!

web.php

Route::get('/test/{id}', 'TravelController@showDetail')->where('id', '[0-9]+');

こうすると、idは数字しかとってこなくなり、先ほどの順番を変えても、先に読み込まれることはなくなりました。

##まとめ

以上がLaravelからのクリスマスプレゼントでした、この先も色々なプレゼント(エラー)をいただくと思いますが、ありがたく受け取ってうまく使いこなしていこうと思います。

##参考

ルーティングを書く順番をミスって画面真っ白から抜け出せなくなった話

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?