在laravel中使用required_with验证作为数组的输入?

Mas*_*ain 2 laravel-5

我有一个表,复选框是数组,文本框也是数组。我想要实现的是当用户选中一个复选框时,它应该验证输入文本框不为空。

公共功能房间预订(请求 $request)
    {


      $消息=数组(
        'check.required'=>'没有选择房间。请选择房间进行预订!',
        'txtnos.required|numeric'=>'请输入人数',
    );
      $规则=数组(
        '检查'=>'必需',
        'txtnos'=>'required_with:data', //txtnos 是一个数组输入字段,data 是一个数组复选框 
        );
      $validator = Validator::make($request->all(), $rules,$messages
            );
      如果 ($validator->fails()) {

            返回重定向::返回()
                ->withErrors($validator)
                ->withinput();

        }
}

html代码

public function roombooking(Request $request)
    {


      $messsages = array(
        'check.required'=>'No room was selected.Please select room to proceed for booking !',
        'txtnos.required|numeric'=>'Please enter no of persons',
    );
      $rules = array(
        'check'=>'required',
        'txtnos'=>'required_with:data', //txtnos is a array input filed  and data is a array checkbox 
        );
      $validator = Validator::make($request->all(),  $rules,$messsages
            );
      if ($validator->fails()) {

            return Redirect::back()
                ->withErrors($validator)
                ->withinput();

        }
}

请帮我

Seb*_*lin 5

改变你的表格:

...
<td><input type="checkbox" name="row[{{$key}}][data]" value="0;{!! $activity->ActivityId !!};{!! $activity->Rate !!};0;0;{!! $activity->ActivityName !!}" />
</td>
<td>{!! $activity->ActivityName !!}</td>
<td>{!! $activity->Rate !!}</td>
<td>{!! Form::text('row[{{$key}}][txtnos]','',['class' => 'form-control small-textbox  ','txtnoid'=>$activity->ActivityId]) !!}</td>
...
Run Code Online (Sandbox Code Playgroud)

所以唯一改变的是数据和txtnos的名称,它会给你以下内容:

$exampleResult = [
    'row' => [
        // old $key as new key
        0 => [
            'txtnos' => 'entered value',
            'data' => '1', // But only if checked
        ],
        1 => [
            'txtnos' => 'entered value',
            'data' => '1', // But only if checked
        ],
    ]
];
Run Code Online (Sandbox Code Playgroud)

验证规则

$rules = [
    'row.*.txtnos' => 'required_with:row.*.data'
];
Run Code Online (Sandbox Code Playgroud)

在示例中,txtnos如果data在同一行 isset,则需要在每一行上。

验证消息

$messages = [
    'row.*.txtnos.required_with' => 'Enter a value or uncheck the checkbox..'
];
Run Code Online (Sandbox Code Playgroud)

重要提示: Laravel 5.2 中添加了
验证.*.,您没有指定您的确切版本,所以我不确定它是否适合您。无论如何,还有另一种方法可以做到这一点。

对于版本 < 5.2,循环输入行并将我示例中的 * 替换为当前键。