【问题标题】:Trying to create custom validation in laravel 4尝试在 laravel 4 中创建自定义验证
【发布时间】:2014-02-17 05:19:56
【问题描述】:

我正在尝试在 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 中注册规则的帖子,但我不确定我在做什么。

任何帮助表示赞赏

【问题讨论】:

    标签: php validation laravel


    【解决方案1】:

    您说的很对——您需要向验证器注册您的规则。在任何类似 bootstrap 的文件中(如果你有服务提供者是最好的选择,否则app/start/global.php 很好,routes.php 也不会很疯狂)你需要以下代码:

    Validator::extend('foo', 'CustomValidate@uniqueMailchimp');
    

    但是,如果您查看the docs,您会发现您不需要整个课程 - 您可以将其作为闭包来完成。如果您希望为您执行自动 IoC DI,则一个类很有用(尽管您似乎没有在您的验证器中使用它)。

    【讨论】:

      猜你喜欢
      • 2014-02-18
      • 2020-08-20
      • 2019-07-04
      • 1970-01-01
      • 2016-11-22
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多