WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
エラーメッセージの操作

エラーメッセージの操作

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

Validatorクラスは、messagesメソッドを呼び出すことによりMessageBagインスタンスを取得することが出来ます。

最初のエラーメッセージを取得する

下記の例(firstメソッド)では、指定したフィールドの最初のエラーメッセージを取得します。

(例)app/controllers/UserController.php

<?php
 class UserController extends BaseController{
 public function getCreate(){
 return View::make('user/create');
 }
 public function postCreate(){
 $inputs=Input::all();
 $rules=[
 'name'=>'required',
 'email'=>'required|email',
 'password'=>'min:8'
 }
 $val=Validator::make($inputs,$rules);
 if($val->fails()){
 return $val->messages()->first('email');
 }
 return View::make('user/index');
 }
  • 15行目:インスタンス化したValidatorクラスのmessagesメソッドでemailフィールドの最初のメッセージ文字列を返します。つまり、何も入力しないで送信した場合、デフォルトでは、『emailは必ず指定して下さい』と表示されます。

特定のフィールドの全エラーメッセージを取得する

特定のフィールドの全エラーメッセージを取得するには、getメソッドを使用します。UserController.phpの15行目を下記のように修正します。

return var_dump($val->messages()->get(‘email’));

  • 上記の例でも、空白で送信した場合、string(41) “emailは必ず指定して下さい。”と表示されました。私の考えでは、array(2) { [0]=> string(41) “emailは必ず指定して下さい” [1]=> string(50) “emailに正しい形式をご指定ください。” }と表示されるのかと思っていました。

全フィールドの全エラーメッセージを取得する

全てのフィールドの全エラーメッセージを取得するには、allメソッドを使用します。UserController.phpの15行目を下記のように修正します。

return var_dump($val->message()->all());

  • 上記の例ではarray(3) { [0]=> string(40) “nameは必ず指定してください。” [1]=> string(41) “emailは必ず指定してください。” [2]=> string(44) “passwordは必ず指定してください。” }と表示されました。

エラーメッセージのフォーマット指定

エラーメッセージのフォーマットを指定するには、firstメソッドの第2引数にフォーマットを指定することが出来ます。同じくUserController.phpの15行目を下記のように修正します。

return $val->messages()->first(‘email’,'<p style=”color:red”>:message</p>’);

  • 上記の例では、赤い文字でemailは必ず指定して下さいと表示されます。
  • :messagesプレースホルダーはバリデーション中のエラーメッセージに置き換わります。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です