Laravelのバリデーションの日本語化など。
Webアプリでは欠かせない重要な機能。入力値の検証いわゆるバリデーション。もちろん、Laravelにも、バリデーション機能があるわけで。
一応、備忘録として、日本語化の方法なども含めて、簡単に残しておこうと思う。
- 下準備
- 以下、入力検証アクションのサンプル
<?php // 入力検証アクション public function action_validate(){ // 入力値 // すべての入力値が連想配列で取得できる。 $input = Input::all(); // バリデーションルール $rules = array( "name" => "required|min:5|max:60", "email" => "required|email", ); // 検証 $validation = Validator::make($input, $rules); // 検証結果 if ($validation->fails()){ // エラーの場合 Session::flash("action_message","入力値に問題があります。"); Session::flash("action_errors",$validation->errors->all()); return Redirect::back()->with_input(); }else{ echo "Success!!"; } } ?>
-
- 上のコードは何をやっているか?
- $input = Input::all(); で入力値を連想配列で取得。
- $rules = array(); で検証ルールを設定
- 検証ルールの指定方法はこの辺を参考に
- http://laravel.com/docs/validation
- CodeIgniterとかやってた人にはとっつきやすいかも。
- 検証ルールの指定方法はこの辺を参考に
- Validator::make($input, $rules);でオブジェクトを作成。
- $validation->fails()で失敗かどうか判定
- 入力値に問題がある場合は呼び出し元へリダイレクト
- return Redirect::back()->with_input(); はとても幸せになれる魔法のコードだと思ってる。
- リダイレクトすると共に、入力値を引き継げるメソッドだから。
- View内でInput::old("name")って呼び出すと、保持された入力値が表示できる。ただし、リロードすると消える。
- return Redirect::back()->with_input(); はとても幸せになれる魔法のコードだと思ってる。
- 上のコードは何をやっているか?
- 肝心の日本語化は?
- 下準備の時点でコピーしたapplication/language/ja/validation.phpを見ればなんとなくわかるはず!
<?php return array( "accepted" => "The :attribute must be accepted.", "active_url" => "The :attribute is not a valid URL.", "after" => "The :attribute must be a date after :date.", "alpha" => "The :attribute may only contain letters.", "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.", ); ?>
-
- お好みの日本語でどうぞ
- :attribute には HTMLフォームで指定した name 属性が勝手に入ることになる。
- これも日本語にしたいって?
- ご心配なく、同ファイル内に↓これを書けばいい。
- これも日本語にしたいって?
<?php "attributes" => array( "name"=>"お名前", "email"=>"メールアドレス", "address"=>"住所", ) ?>
-
- 簡単でしょ?
とりあえず、今日はこれまで。