バリデーションエラーメッセージ多言語化
Validateエラーメッセージを多言語対応させるため、以下のビヘイビア導入させていただきました。
GitHub - ichikaway/cakeplus: adding some functions to cakephp
バリデーションメッセージをDryにしつつ国際化 - cakephperの日記(CakePHP, Laravel, PHP)
http://github.com/ichikaway/cakeplus/blob/master/models/behaviors/validation_error_i18n.php
の説明に概要書いてあるのですが、躓いたのが設置場所。
最初、これをapp/model/behavoir以下に設置してしまっていたので読み込めませんでしたが、正解は
plugins/cakeplus/models/behaviors/
以下。
他はvalidation_error_i18n.php冒頭のコメント通りでほぼ問題なし。
ただ、
- alphaNumericが上手く動いてないなあと思ったら、バグありらしい。↓のように独自に入れた方がよさそう(別実装)
以下ソース。
app/model/user.php
<?php class User extends AppModel { var $name = 'User'; var $validate = array( 'username' => array( 'notempty' => array( 'rule' => 'notEmpty', ), ), 'password1' => array( 'notempty' => array( 'rule' => 'notEmpty', ), ), 'password2' => array( 'notempty' => array( 'rule' => 'notEmpty', ), ) );
app/model/app_model.php
<?php class AppModel extends Model { var $actsAs = array('Cakeplus.ValidationErrorI18n'); function beforeValidate(){ $error_messages = array( 'notempty' => __('Please be sure to input.'), 'between' => __('Between %2$d and %3$d characters.',true), ); $this->setErrorMessageI18n($error_messages, false); $this->replaceValidationErrorMessagesI18n(); return true; } }