回答編集履歴
1
追記
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
## 解説
|
2
|
+
|
1
3
|
この用法の `use` ステートメントは, PHP においては **「実際にファイルが存在するかどうか」を一切確認しません。**そのファイル内で短縮名を使えるようにするだけのものです。そのため,その記述それ自体は(PHPStan などの静的解析ツールを使わない限り)決してエラーを引き起こすことはありません。
|
2
4
|
|
3
5
|
- `use` ステートメントを消した状態で `Auth::user()->folders()->save($folder);` を実行すると,その `Auth` は同じ名前空間から計算されて `App\Http\Controllers\Auth` という名前を指すようになってしまいます。この存在しないクラスを `App\Http\Controllers\Auth::user()` として使ったら,当然別のエラーになるでしょう。
|
@@ -39,4 +41,20 @@
|
|
39
41
|
よって,エラー原因は以下のように整理されます。
|
40
42
|
|
41
43
|
- **チュートリアル記事に,認証が必須であるページに認証を要求する `auth` ミドルウェアを設定していない誤りがある。**
|
42
|
-
- **あなたがログインせずに `/folders/create` にアクセスしている。**
|
44
|
+
- **あなたがログインせずに `/folders/create` にアクセスしている。**
|
45
|
+
|
46
|
+
## 対処
|
47
|
+
|
48
|
+
```php
|
49
|
+
Route::get(/* ... */)->name(/* ... */);
|
50
|
+
```
|
51
|
+
|
52
|
+
↓
|
53
|
+
|
54
|
+
```php
|
55
|
+
Route::middleware('auth')->group(function () {
|
56
|
+
Route::get(/* ... */)->name(/* ... */);
|
57
|
+
});
|
58
|
+
```
|
59
|
+
|
60
|
+
こうすることで,この中に書いたものはすべて認証必須ということにできます。認証されていない状態でアクセスすると,強制的にログインページにリダイレクトされることになるかなと思います。
|