Laravelでバリデーションをモデルにまとめて記載する。
LaravelでRESTfulなルーティングをしていまいした。
- items/create 新規作成画面
2.POST送信(POST items/ )
3.カスタムリクエストでバリデーション)
→エラー発生時に自動で items/create にリダイレクト
4.items/create 画面にエラー表示
大きな不満はなかったのですが、3の瞬間になにかしたくなる。or リクエストファイルを作るのが面倒そうなどあり、Modelに無理やり書いてみた。
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use SymfonyComponentHttpFoundationRequest;
use Validator;
class Products extends Model
{
/**
* create Validator Instance
*
* @param IlluminateHttpRequest $request
* @return IlluminateValidationValidator
*/
public static function getValidator(Request $request)
{
$validator = Validator::make(
$request->all(),
[
'name' => 'required',
'jan' => 'required',
],
[
'name.required' => '名は必須項目です。',
'jan.required' => 'JANコードは必須項目です。'
]
);
return $validator;
}
}
まぁさほどモデルがコードが増えることは無さそうなので、これである程度シンプル・手が届きやすくなりそう。(カスタムリクエストにする方がベストプラクティスっぽくあるが、お一人開発なのでとりあえず。
コメントを残す