wonTech

プログラミングもろもろ

バリデーション失敗時にカスタムメッセージを表示させる

通常のバリデーション

$data = Input::all();
$rules = array( 'title' => 'required', 'content' => 'required|max:200')

$validator = Validator::make($data, $rules);

if($validator->fails()){
  return Redirect:action('hogeController@create')->withErrors($validator) 
}

これだと$errorを遷移先のビューで表示させた場合英語のエラーメッセージがそのまま出る。
日本語でエラーメッセージを表示させたいときはValidator::makeの第三引数にカスタムメッセージを指定する。

$data = Input::all();
$rules = array( 'title' => 'required', 'content' => 'required|max:200') 
$message = array('title' => 'タイトルを入力してください');
$validator = Validator::make($data, $rules, $message);

if($validator->fails()){
  return Redirect:action('hogeController@create')->withErrors($validator) 
}

特定フィールドのバリデーションルールにメッセージを指定したい場合は.でフィールド名とルールを繋げて指定する。

$message = array('content.required' => '内容を入力してください');

これでcontentフィールドのrequiredチェックが失敗した時だけカスタムメッセージを表示できる。
(titleフィールドのrequiredチェックに失敗したときはデフォルドのメッセージが表示される)