PHPバージョン:7.1.14
Laravelバージョン:5.7.9
今回はLaravelのValidationについてです!
Validationとは「検証」という意味で、
例えば入力必須の項目が空欄だとか
メールアドレスが正しく入力されていないとか、
そういった不備を検証する機能です!
Laravelにも標準搭載されているので見ていきたいと思います!
モデルにValidationのルールを定義
まずはArticleモデルにValidationのルールを定義します!
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $guarded = ['id']; public static $rules = array( 'title' => 'required', 'body' => 'required', ); }
app>Models>Article.php
$rulesという静的フィールドに
配列で各カラムに対するValidationのルールを
string型で定義します。
'required'と定義することで未入力チェックを行います。
コントローラーでValidationを実行
続いてコントローラーにてValidationを使い、
titleとbodyの未入力のチェックを行います。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; class ResController extends Controller { public function index() { $articles = Article::all(); return view('res.index', ['articles'=>$articles]); } public function create() { return view('res.create'); } public function store(Request $request) { $this->validate($request, Article::$rules); Article::create([ 'title' => $request->title, 'body' => $request->body, 'category' => '', 'good' => 0, ]); return redirect('articles'); } }
app>Http>Controllers>ResController.php
indexメソッドはArticleモデルを全件取得し、
index.blade.phpにて全件表示します。
createメソッドは記事作成フォームを表示します。
storeメソッドでValidationを実行しています。
コントローラーのvalidateメソッドを使います。
第一引数の$requestはフォームから送られてきた値です。
第2引数は先ほど作成したArticleモデルのValidationルールです。
validateメソッドは第一引数に値、第二引数にValidationルールを指定することで
Validationを実行します。
もしtitleかbodyいずれかが未入力の場合は
自動的にフォームへ戻されます。
titleとbody両方とも入力されていれば、
記事一覧ページへredirectで飛ばされます。
今回はここまでです、ありがとうございました〜!