2012-03-20 12 views
0

CakePHPモデルの検証メッセージにドメイン文字列を追加することはできますか?ドメイン文字列をCakePHPモデルの検証メッセージに追加する

echo __d('my_app_name', 'This is a regular message'); 

をしかし、モデルで検証メッセージは、プレーンな文字列やsprintf引数です:私はすべての私のメッセージは__d()に局在している

'my_field' => array(
    'my_rule' => array(
    'rule' => 'alphanumeric', 
    'message' => 'Only letters and numbers allowed', 
) 
) 

'another_field' => array(
    'another_rule' => array(
    'rule' => 'alphanumeric', 
    'message' => ('Only %s and %s allowed', 'letters', 'numbers'), 
) 
) 

感謝!

答えて

2

あなたは、CakePHP 2.xのを使用していると仮定すると:

CakeのModelクラスは、プロパティvalidationDomainを持って、あなたはちょうどあなたが欲しいものを得るためにあなたのモデルに

public $validationDomain = "yourdomain";

を追加することができます。 APIから

情報:

ValidationDomain(文字列)検証エラーを変換するときに使用する検証文字列のドメインの

名前。

http://api20.cakephp.org/class/model

1

はあなたがmodelのvalidationDomainプロパティを変更する考えがありますか? (編集:私はちょうど@Nappoがこれを示唆していることに気づい)

それともそれがあなたのために十分に柔軟でなければ、あなたはそうのようなあなたのモデルにCakePHPのinvalidate()機能をオーバーライドすることができます:

/** 
* Overrides Model.php's invalidate function 
*/ 
public function invalidate($field, $value = true) { 
    if (is_string($value)) { 
    return parent::invalidate($field, __d('my_app_name', $value)); 
    } 
    else { 
    return parent::invalidate($field); 
    } 
} 

あなたがこの中に入れることができますあなたのAppModelまたはあなたがメッセージを変更したい特定のモデル内にあるかどうかを確認します。

+0

「validationDomain」属性が欠落しています:(それは私のために働きます。 – elitalon

関連する問題