山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Laravel From Scratch part. 3

Section 5 Forms

laracasts.com

GitHub - YamaKasa3/laravel6

The Seven Restful Controller Actions

記事の更新や削除などのメソッドを定義します。

Restful Routing

RESTというかHTTPのメソッドについて考えます。

押さえておきたいHTTPメソッドのPOSTとPUTの違い | まさきの図書館

Form Handling

記事を追加するときのURLがarticles/createなので、個別記事のURLであるarticles/***と被ってしまいます。

なので、web.phpルーター設定を

Route::get('/articles', 'ArticlesController@index');
Route::get('/articles/create', 'ArticlesController@create');
Route::get('/articles/{article}', 'ArticlesController@show');

cssはBulmaを使います。

Bulma: Free, open source, and modern CSS framework based on Flexbox

新しい記事を追加できることを実際に確認します。

Forms That Submit PUT Requests

記事の更新では記事を追加するときのページのレイアウトを利用します。記事のIDを用いてデータベースから記事のタイトルなどを出力します。そうすることで投稿した時の状態を再現できます。

HTMLのフォームからPUTメソッドを利用できないので、Laravelでは

        <form method="POST" action="/articles/{{ $articles->id }}">
            @csrf
            @method('PUT')
            <div class="field">
                <label class="label" for="title">Title</label>
                <div class="control">
                    <input class="input" type="text" name="title" id="title" value={{ $article->title }}>
                </div>
            </div>
        </form>

のように記述します。

Laravel View表示におけるview()とredirect()の違いについて - Qiita

https://blog.e2info.co.jp/2018/04/21/laravel_form_put_patch_delete/

Form Validation Essentials

タイトルや本文などが空白であるときに投稿や更新を行わないようにするために、バリデーションを行います。

また不正な投稿であるとき画面の遷移を行わず?に、old関数を使って復元するようにします。