Laravel 4.2 验证:required_unless

Laravel 4.2 validation: required_unless

最近我一直在学习 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"
    )
);

...但这只是一种变通方法,并非优雅的永久解决方案。

您可以使用 extend 方法简单地扩展验证器。

像这样

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

甚至从 L5.2 窃取了一些逻辑 here

您可以在 extend here

上查看文档