使用逻辑运算符进行Laravel表单验证

Sha*_*ani 5 forms validation rules request laravel-5.2

当用户填写消息(textarea)时,他/她无法填写日期,时间,地点值.
只有当Message为空且所有这三个字段都被填充时,这三个字段才会考虑.
如何使用Laravel表单验证执行此操作?是否可以在Request的规则方法中定义这些逻辑?
我是Laravel的新手.
提前致谢

这是我的表格

ala*_*iva 5

您可以通过使用条件验证规则来实现此目的(服务器端):

  • required_if:另一个字段,值,...
  • required_unless:另一个字段,值,...
  • required_with:foo,bar,...
  • required_with_all:foo,bar,...
  • required_without:foo,bar,...
  • required_without_all:foo,bar,...

对于你的情况我想说:

  • 除非填写消息,否则日期为必填项
  • 除非填写消息,否则需要时间
  • 除非填写消息,否则场地为必填项
  • 留言内容为必填项,不含日期、时间、地点

如果需要的话,可以用管道将它们分隔开来进行链式规则

下面是一个示例片段。在您的ExampleFormRequest扩展中使用此方法Request

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    $rules = [];

    switch ($this->method()) {
        case 'PATCH':
        case 'PUT':
        case 'POST':
            $rules = [
                'date'    => 'required_without:message',
                'time'    => 'required_without:message',
                'venue'   => 'required_without:message',
                'message' => 'required_without_all:date,time,venue',
                ];
            break;
        default:
            // Perform no alteration to rules
            break;
    }

    return $rules;
}
Run Code Online (Sandbox Code Playgroud)

在这里查看文档