【问题标题】:how to validate dynamic field array laravel 5.6 with required_with_all?如何使用 required_with_all 验证动态字段数组 laravel 5.6?
【发布时间】:2019-05-24 20:41:46
【问题描述】:

我有 3 个输入字段,我希望以这样的方式验证,如果任何字段(3 个中的任何一个)被填充,那么所有三个都需要,如果它们都没有被填充,那么什么都不需要请告诉我 laravel 5.6 中的解决方案。

注意:这 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 个字段中的任何一个,那么其他两个字段必须是必需的。如果它们都没有填写,则不需要。

实际结果: 但现在如果我填写标题字段并提交表单,我的视图中不会显示任何错误

【问题讨论】:

    标签: arrays validation laravel-5 dynamic


    【解决方案1】:

    像这样试试。

    If 语句 应该是您的解决方案 :) 比如……

    在您的控制器中

    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

    【讨论】:

    • 错误未显示表单已验证,因为我不想要..如果我填写标题字段并将其他两个留空,则表单已成功验证我希望它应该向我显示要填写的错误其他填充也是。@Magnetic
    • 请帮助我,我从一天开始就陷入了这个问题。
    • 检查已编辑的答案。以及为什么将所有变量都设为数组类型?
    • 因为我想动态添加字段..你看到我的问题了吗?
    猜你喜欢
    • 2019-01-07
    • 2020-11-09
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多