如何使用required_with_all验证动态字段数组laravel 5.6?

时间:2018-12-26 16:24:07

标签: arrays validation laravel-5 dynamic

我有3个输入字段,我希望以这种方式进行验证:如果填充了任何字段(共3个字段),则需要全部输入三个字段,如果都不填写,则不需要任何内容​​,请告诉我laravel 5.6中的解决方案。 / p>

注意:这3个输入字段是数组。如果有人单击添加更多按钮,则该字段将递增。

我尝试了required_with和required_with,但没有任何收获。我看到另一则帖子没有解决我的问题。

我的观点:

<div class="box_general padding_bottom">
        <div class="header_box version_2">
            <h2><i class="fa fa-clock-o"></i>Special&nbsp;/&nbsp;Holiday Hours</h2>
        </div>
        <div class="row">
            <div class="col-md-12">
                <table id="pricing-list-container" style="width:100%;">
                    <tbody><tr class="pricing-list-item">
                        <td>
                            <div class="row">
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <input type="text" class="form-control" placeholder="Title" name="holidays_title[]" id="holidays_title[]" >
                                    </div>
                                </div>
                                <div class="col-md-3">
                <div class="form-group">
                    <input type="time" class="form-control" name="opening_holidays_hours[]"  id="opening_holidays_hours[]">
                </div>
            </div>
            <div class="col-md-3">
                <div class="form-group">
                    <input type="time" name="closing_holidays_hours[]"  class="form-control" id="closing_holidays_hours[]">
                </div>
            </div>
                                <div class="col-md-2">
                                    <div class="form-group">
                                        <a class="delete" href="#"><i class="fa fa-fw fa-remove"></i></a>
                                    </div>
                                </div>
                            </div>
                        </td>
                    </tr>
                </tbody></table>
                <a href="#0" class="btn_1 gray add-pricing-list-item"><i class="fa fa-fw fa-plus-circle"></i>Add Item</a>
                </div>
        </div>

我的控制器

public function createStore(Request $request)
{   


    $request->validate([

       'holidays_title'   => 'array|min:1|required_with_all:opening_holidays_hours,closing_holidays_hours',
         'opening_holidays_hours' => 'required_with_all:holidays_title,closing_holidays_hours',
         'closing_holidays_hours' => 'required_with_all:holidays_title,opening_holidays_hours',


    ]);

    return redirect()->back();
}

预期: 我只想如果3个中的任何一个被填满,那么必须填写另外两个字段。如果没有一个填满,则不需要填写。

实际结果: 但是,如果我填写标题字段并提交表格,则现在在我的视图中没有错误显示

1 个答案:

答案 0 :(得分:0)

尝试这样。

如果声明应该是您的解决方案:) 例如...

在您的控制器中

public function createStore(Request $request)
{   

    $validator = $request->validate([
                    'holidays_title' => 'required'
                 ]);

    if ($request->holidays_title != null) {
       return redirect()->back()->withErrors($validator);
    }
    elseif($request->opening_holidays_hours != null && $request->closing_holidays_hours != null) {
       $validator = $request->validate([
                            'holidays_title' => 'required',
                            'opening_holidays_hours' => 'required',
                            'closing_holidays_hours' => 'required'
                            ]);
    }
    else($request == null){
      return redirect()->back();
    }

    return redirect()->back()->withErrors($validator);
}

,还必须在您的Blade文件中插入flash::messagehttps://laravel.com/docs/5.7/validation#manually-creating-validators