【问题标题】:Laravel Validation one of two fields must be filledLaravel 验证必须填写两个字段之一
【发布时间】:2015-03-08 15:32:54
【问题描述】:

我有两个字段:

QQ

电子邮件

如何设置验证器对象,以便必须填写这些字段之一?哪个都无所谓。


$messages = array(
    'email.required_without:qq' => Lang::get('messages.mustenteremail'),
    'email.email' => Lang::get('messages.emailinvalid'),
    'qq.required_without:email' => Lang::get('messages.mustenterqq'),
);

【问题讨论】:

    标签: php validation laravel laravel-4


    【解决方案1】:

    required_without 应该可以工作。

    这意味着如果其他字段不存在,则该字段是必需的。如果有两个以上的字段并且只需要一个,请使用required_without_all:foo,bar,...

    $rules = array(
        'Email' => 'required_without:QQ',
        'QQ' => 'required_without:Email',
    );
    

    【讨论】:

    • 不完全确定。我宁愿认为它只是 email.required_without 没有实际的规则参数,但你必须尝试......
    • 没有,这似乎有点限制:(
    • 为什么会有限制?无论如何,您只能在同一字段上使用相同的规则一次?
    • 我只想在两个字段都不存在时抛出错误。 id应该怎么做?当两个字段都存在时,它应该可以工作。
    • 我发现那个文档有点奇怪。感谢您通过示例指出这一点。
    【解决方案2】:

    在上面的例子中(由 lucasgeiter 给出)你实际上只需要一个条件而不是两个条件。

    $rules = array(
        'Email' => 'required_without:QQ'
    );
    

    如果您同时拥有这两个规则,那么两个都不填写将导致显示两条错误消息。这样,它会检查是否至少填写了一个字段,如果都没有填写,则只会显示一条错误消息。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多