是否可以在CakePHP模型中为验证消息添加域字符串?我已将所有邮件本地化为__d()
:
echo __d('my_app_name', 'This is a regular message');
但模型中的验证消息是纯字符串或sprintf
参数:
'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'),
)
)
感谢!!!
答案 0 :(得分:2)
假设你正在使用CakePHP 2.x:
Cake的Model
类有一个属性validationDomain
,您可以添加
public $validationDomain = "yourdomain";
到您的模型,以获得您想要的。
来自API的信息:
ValidationDomain(string)
转换验证错误时使用的验证字符串域的名称。
答案 1 :(得分: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或您希望更改消息的特定模型中。