Laravel 4.2验证:required_unless

时间:2016-08-08 11:35:05

标签: php validation laravel custom-validators

最近我一直在学习Laravel,并且通过使用验证器规则required_unless from Laravel 5.2来解决验证器问题:

$validator = Validator::make(
    array(
        'social_id' => $social_id,
        'login_by' => $login_by
    ), array(
        'social_id' => 'required_unless:login_by,manual',
        'login_by' => "in:manual,google,facebook, stack_exchange, myspace"
    )
);

问题是我使用Laravel 4.2并且此验证规则未实现jet。

我还可以使用其他任何验证规则吗?

如果没有,我将如何编写自定义验证规则以及我将它放在哪里?

编辑:我能做到:

$validator = Validator::make(
    array(
        'social_id' => $social_id,
        'login_by' => $login_by
    ), array(
        'social_id' => 'required_if:login_by,google,facebook, stack_exchange, myspace',
        'login_by' => "in:manual,google,facebook, stack_exchange, myspace"
    )
);

...但这只是一种解决方法而非优雅的永久性解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用extend方法扩展Validator。

像这样的东西

Validator::extend('required_unless', function ($attribute, $value, $parameters) {
    // Implement your version of required_unless here
});

甚至从L5.2 here

中窃取了一些逻辑

您可以在扩展here

上查看文档