Как проверить массив динамических полей Laravel 5.6 с required_with_all? - PullRequest
0 голосов
/ 26 декабря 2018

у меня есть 3 поля ввода, я хочу проверки в таком стиле, что если заполнено какое-либо поле (из 3), то все три обязательны, если ни одно из них не заполнено, то ничего не требуется, пожалуйста, сообщите мне решение в laravel 5.6.

Примечание: эти 3 поля ввода являются массивом. Если кто-то нажмет на кнопку «Добавить больше», эти поля будут увеличиваться.

Я пробовал требуемый_содержащий и обязательный_с всем, но ничего не получал.проблема.

Мой вид:

<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 голосов
/ 27 декабря 2018

Попробуйте вот так.

Если ваше решение должно быть вашим решением :) например ...

В вашем контроллере

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);
}

, а также необходимо вставить flash::message в файл Blade. https://laravel.com/docs/5.7/validation#manually-creating-validators

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...