【问题标题】:validation using required_with in laravel for input filed as array?在 laravel 中使用 required with 将输入字段作为数组进行验证?
【发布时间】:2016-12-11 16:48:40
【问题描述】:

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

公共功能房间预订(Request $request) { $消息 = 数组( 'check.required'=>'没有选择房间。请选择房间进行预订!', 'txtnos.required|numeric'=>'请输入人数', ); $规则=数组( '检查'=>'必需', 'txtnos'=>'required_with:data', //txtnos 是数组输入字段,data 是数组复选框 ); $validator = Validator::make($request->all(), $rules,$messsages ); if ($validator->fails()) { 返回重定向::back() ->withErrors($验证器) -> 输入(); } }

HTML代码

<table class="table table-hover"  data-toggle="table"  id="table"
data-click-to-select="true">
    <thead>
        <tr>
            <th style="width:10%;" data-field="ActivityId">Select</th> 
            <th style="width:30%;" data-field="ActivityName">Activity Name</th>
            <th style="width:30%;" data-field="Rate">Rate/Person</th>
            <th style="width:30%;">Nos. of person</th>
        </tr>
    </thead>
    <tbody>                
           @foreach($loadactivity as $key=>$activity)
           <tr>
               <td>
                   <input type="checkbox" name="data[]"  value="0;{!! $activity->ActivityId !!};{!! $activity->Rate !!};0;0;{!! $activity->ActivityName !!}" />
               </td>
               <td>{!! $activity->ActivityName !!}</td>
               <td>{!! $activity->Rate !!}</td>
               <td >{!! Form::text('txtnos[]','',['class' => 'form-control small-textbox  ','txtnoid'=>$activity->ActivityId]) !!}</td>
           </tr>
           @endforeach
    
     </tbody>
</table>

请帮帮我

【问题讨论】:

  • 请提供表单的 HTML

标签: laravel-5


【解决方案1】:

改变你的形式:

...
<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>
...

所以唯一改变的是数据和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
        ],
    ]
];

验证规则

$rules = [
    'row.*.txtnos' => 'required_with:row.*.data'
];

在示例中,如果 data 位于同一行,则每行都需要 txtnos

验证信息

$messages = [
    'row.*.txtnos.required_with' => 'Enter a value or uncheck the checkbox..'
];

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

对于

【讨论】:

  • 我已经用 HTML 代码更新了我的问题。请检查并告诉我如何设置规则
  • 很高兴听到。请“accept the answer”说谢谢
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 2016-07-22
  • 2018-06-20
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2013-07-01
  • 2017-06-09
相关资源
最近更新 更多