我正在尝试在laravel 4中创建自定义验证规则,并且正在努力让它工作或理解我正在做的事情。
目前 - 当我尝试提交表单并对其进行验证时,我会在浏览器中获得以下内容:
/**/
我正在服用的东西已经坏了!
我在app/validators/customValidate.php
class CustomValidate extends Illuminate\Validation\Validator
{
public function uniqueMailchimp($attribute, $value, $parameters)
{
$mailchimp = MailchimpWrapper::lists()
->memberInfo(
'xxxxxxx',
array('emails'=>array(
'email'=>$value
)
));
//dd($$mailchimp['success_count']);
return ($mailchimp['success_count'] > 0 ? false : true );
}
我已经运行了composer dump-autload
在我的控制器中,我正在执行以下操作:
$rules = array(
'email' =>'email|uniqueMailchimp',
);
$messages = array(
'uniqueMailchimp'=>'The email provided has already been used.'
);
$validator = Validator::make($data, $rules, $messages);
}
然后我会检查一个有效的表格:
if($validator->passes()) {
# code
}
如果验证失败,控制器应重定向到视图:
return Redirect::route('members.create')
->withInput()
->withErrors($validator)
->with('errMessage', $message);
我可能错过了一步。我看过有关在global.php中注册规则的帖子,但我不确定我在做什么。
任何帮助表示赞赏
答案 0 :(得分:0)
你是对的 - 你需要用验证器注册你的规则。在任何类似bootstrap的文件中(如果你有一个服务提供者是最好的候选者,否则app/start/global.php
是好的,而routes.php也不会疯狂)你需要以下代码:
Validator::extend('foo', 'CustomValidate@uniqueMailchimp');
但是,如果你看一下the docs,你会发现你不需要整个课程 - 你可以把它作为一个闭包。如果您希望为您执行自动IoC DI,则类很有用(尽管您似乎没有在验证器中使用它)。