0
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?

Laravel初心者が最初に混乱したことまとめ(Route / Controller / View / Request)

0
Posted at

Laravelをはじめました。

はじめるまでが長い

私はAIを家庭教師にPHP学習を進めてきました。次々提案してくれるので、ありがたいのですが、PHP学習の終わりが見えませんでした。
来月から新たにメンターの先生に入ってもらうことになり、その先生に進捗(CRUDはもうできた)を伝えたら、Laravelに入っていいよと言われたので、仕事が落ち着いたタイミングではじめました。

なんか今までと違う

今まで職場の研修でPythonなど触ってきましたが、スタートが違いました。helloworldではない――フォルダが分けられていて、そこで役目があって…そういうものかという受け入れるのに時間がかかりました。
その過程で「実際に触ると混乱するポイント」がいくつかあったので整理します。

URLはどこで決まっているのか

答えは Route でした。

ファイル routes/web.php

Route::get('/post', function () {
    return view('post_form');
});

Route::post('/post', [PostController::class, 'store']);

ここで /post というURLを定義しています。

Requestってなに?

ここがかなり疑問でした。
public function store(Request $request)
この $request は何か。

結論はブラウザから送られてきたデータの箱です。

例えばフォームが

<input name="title">
<textarea name="body"></textarea>

だった場合、ブラウザは次のようなデータを送ります。

title = 入力したタイトル
body  = 入力した本文

Controllerでは

$request->title
$request->body

で取り出せます。

Viewにデータを返す書き方

return view('post_result', [
    'title' => $title,
    'body' => $body
]);

この書き方の意味は Viewで使う名前 → Controllerの変数に変換するということです。
つまり 'title' => $title については、
Viewでは $title として使えます。

バリデーション

$request->validate([
    'title' => 'required',
    'body' => 'required',
]);

nameがtitle,bodyの入力欄が空の場合、エラーになります。

@if ($errors->any())
    <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
@endif

以上がエラー表示。デフォルトの英文が出てくる。

バリデーションの文言変更

Controllerでエラーメッセージを第二引数で指定できます。

$request->validate(
[
    'title' => 'required',
    'body' => 'required',
],
[
    'title.required' => 'タイトルは必須です',
    'body.required' => '本文は必須です',
]
);

'ほにゃらら.required'はtitleフィールドのrequiredエラーということで、フィールド名.ルール名という形になるそうです。

亜種

$request->validate(
[
    'title' => 'required|max:100',
],
[
    'title.required' => 'タイトルは必須です',
    'title.max' => 'タイトルは100文字以内で入力してください',
]
);

よって、文字数確認などもこの形式。

え、もしかしてこの手の構文?結構多いんかな。震え

0
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
0
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?