laravelでのvalidation処理2
laravelのvalidationの色んなやり方を試す。
今回はコントローラ側でValidatorを作ってチェックする。
エラー後の動作は自分でハンドリングする。
use Illuminate\Support\Facades\Validator; /** * ユーザ情報更新 */ public function postEditUser(Request $request) { $validate = Validator::make( $request->all(), // チェック内容 [ 'id' => 'required', 'name' => 'required', 'email' => 'required', ], // エラー文言 [ 'id.required' => ':attributeは必須です。', 'name.required' => ':attributeは必須です。', 'email.required' => ':attributeは必須です。', ], // attribute [ 'id' => 'ID', 'name' => '名前', 'age' => '年齢' ] ); if ($validate->fails()) { // エラーあり Log::debug('エラーあり' . $validate->messages()); // TODO:responseのjsonを作りたい $res = new class { public $has_error = true; public $message = null; }; $res->message = $validate->messages(); return json_encode($res); } // TODO:正常時の処理 }
ちなみに、nameの項目が未入力だった場合の$validate->messages()はこんな感じ
{ "name": ["名前は必須です。"] }
自分でエラー時のレスポンス作るなら、システム的に統一したフォーマットを作った方が良いので個別のコントローラでレスポンスを作ることはないんじゃないかしらと想定。
この書き方はちょいプロ用かな。