【问题标题】:Laravel 4.2 validation: required_unlessLaravel 4.2 验证:required_unless
【发布时间】:2016-08-08 11:35:04
【问题描述】:

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

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

【问题讨论】:

  • 4.2还是5.2你用什么?

标签: php validation laravel custom-validators


【解决方案1】:

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

类似的东西

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

甚至从 L5.2 here 中窃取一点逻辑

您可以在扩展here 上查看文档

【讨论】:

  • Laravel 实现引用 $this->data.由于您建议我编写的功能没有扩展 Validator 我不能使用它,可以吗?这是否意味着必须创建自己的扩展 Validator 的类?
  • 不,你不能在闭包内使用$this->data,如果你需要一些来自基本验证器的东西,那么是的,你需要你自己的验证器类查看上面的文档链接,“扩展验证器类”
  • 有什么建议我应该把那个课放在哪里?
  • 应用内的“Validators”文件夹似乎很方便。我认为这还不是 PSR4,所以请检查您的 composer.json 文件中的自动加载
猜你喜欢
  • 2017-12-25
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 2015-07-21
  • 1970-01-01
  • 2016-09-17
  • 2016-08-24
相关资源
最近更新 更多