我设法在我的项目中使用Laravel验证模块:
<?php
namespace Models;
use Illuminate'Database'Eloquent'Model as eModel;
use Illuminate'Validation'Factory as ValidatorFactory;
use Symfony'Component'Translation'Translator;
class AbstractModel extends eModel {
public function validate($data)
{
$factory = new ValidatorFactory(new Translator('en'));
$v = $factory->make($data, $this->rules);
return $v;
}
public function save() {
$validator = $this->validate($this->toArray());
if(!$validator->passes())
{
$messages = $validator->messages();
print_r($messages);
die();
}
parent::save();
}
}
如果我使用它,我会得到以下输出:
Illuminate'Support'MessageBag Object ( [messages:protected] => Array ( [email] => Array ( [0] => validation.required ) ) [format:protected] => :message )
"validation.required"我不知道为什么模块没有得到默认的错误字符串。我很确定模块工作正常因为如果我尝试定义一些自定义字符串,像这样:
$message = array(
'unique' => 'FOO',
'email' => ':attribute WORNG!!!!!',
'required' => ':attribute MUST WRITE EMAIL!!!!'
);
$factory = new ValidatorFactory(new Translator('en'));
$v = $factory->make($data, $this->rules, $message);
我得到了输出:
Illuminate'Support'MessageBag Object ( [messages:protected] => Array ( [email] => Array ( [0] => email MUST WRITE EMAIL!!!! ) ) [format:protected] => :message )
我错过了什么?
可能Translator需要locale为'en_US'