PHPフレームワークLaravel5.6でCRUD~CREATE編

CREATEは新規登録機能なのでcreateメソッドで登録フォームを作ってstoreメソッドで保存。

入力項目は
タイトル:text
カテゴリ:select
説明:textarea
だけ。

コントローラーにcreateメソッド追加

app/Http/Controllers/TestController.php

カテゴリは何度も使うので定数定義しておく。

※PHP5.6からconstに配列も使えるようになった!

入力ページ(View)を作るよ

resources/views/test/create.blade.php

※Resourcefulルーティングだとformのmethodプロパティが「POST」ならactionプロパティは「/test」だけでstoreメソッドを呼び出す。
※@csrfはCSRF(クロスサイトリクエストフォージェリ)対策のトークンを生成。

/test/createにアクセスして確かめよう

コントローラーにstoreメソッド追加

app/Http/Controllers/TestController.php

※Testモデルを使用するのでuse文でインポート!
このクラスで「Test」と言えばTestモデルのこと。

※fillメソッドは引数の配列でモデルのプロパティを設定してくれる!
どんなプロパティがあるかわからないと設定できないからインスタンス化しないと設定できない。

バリデーションを追加

【コントローラー側】

TestController.phpのstoreメソッドに追加します。

app/Http/Controllers/TestController.php

validateメソッドの引数は4つ。
①Request $request :リクエスト
②array $rules :ルール
③array $messages = [] :メッセージ
④array $customAttributes = [] :カスタム属性

・メッセージそのものを変えたいときは第3引数の$messageに[リクエストのキー].[ルール]に対応するメッセージを設定すればOK。
・第4引数$customAttributesを設定しない場合はリクエストのキーが使用される。

コメントアウトを外して確かめよう!

◎バリデーションの設定しかしてないけどエラー時には自動リダイレクトされる!すばらしい!

【ビュー側】

resources/views/test/create.blade.php

・old(‘[input:name属性]’)で前回入力された値を取得できる。
・$errors->has(‘[input:name属性]’)でバリデーションエラーの有無が判別できる。
・バリデーションの各エラーは$errors->first(‘[input:name属性]’)で取得できる。

★コントローラーでビューへ渡す変数に「errors」使えないね。φ(・_・”)メモメモ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする