Laravel настраиваемое сообщение проверки для нескольких полей с одинаковым именем - PullRequest
0 голосов
/ 20 мая 2018

У меня есть следующая проверка в действии контроллера:

foreach ($request['qtys'] as $key => $val){
            if (!$this->_validateMinQty($key, $job, $val)){
                $customerTitle = $job->customers()->where('customer_id',$key)->first()->title;
                return redirect()->back()->withErrors(['qtys' => __('The qty of the customer :customerTitle is less than allowed qty',['customerTitle' => $customerTitle])]);
            }
        }

Эта проверка ввода нескольких форм с именем qtys в представлении:

@foreach($job->customers as $customer)

    <div class="form-group {{$errors->first('qtys has-error')}}">
        {!! Form::label('qtys-'.$customer->id, __('Qty').' '.$customer->title) !!}
        <div class="row">
            <div class="col-md-9">
                {!! Form::text('qtys['.$customer->id.']',$customer->pivot->e_production,['class' =>'form-control qtys', "data-sumequal"=>"qty",'required' => 'required','title' => $customer->pivot->aid,'id' => 'qtys-'.$customer->id]) !!}
                <div class="help-block with-errors"></div>
                 @php ($eleE =  $errors->first('qtys'))
                @include('layouts.form-ele-error')
            </div>
            <div class="col-md-3">
                <a href="/storage/create/{{$customer->pivot->aid}}" class="btn btn-nile"><i class="fox-add"></i>{{__('Add Storage')}}</a>
            </div>
        </div>

    </div>
    @endforeach

Приведенный выше код работает, носо следующим ограничением:

Сообщение об ошибке отображается под каждым входом с именем qtys[x], где x - целое число, и только первый вход Testana имеет недопустимое количество, как на следующем снимке экрана: enter image description here

В сообщении о возврате действия контроллера я попытался использовать индексированное имя для ввода, как показано ниже:

return redirect()->back()->withErrors(['qtys.10' => ....

Однако это предотвращает рендеринг сообщения об ошибке.под любым qtys полем.Есть ли решение?

1 Ответ

0 голосов
/ 20 мая 2018

Решение, которое я нашел, начинается с определения первого метода , найденного в представлении:

@php ($eleE =  $errors->first('qtys'))

Это, в моем коде, должно быть изменено на:

@php ($eleE =  $errors->first('qtys.'.$customer->id))

Поскольку несколько полей получили ключи, равные идентификатору клиента. Это техника, которую я обычно использую, когда я хочу отправить двойной кусок данных в одном сообщении или в одном элементе формы. Затем в контроллере я продолжаю первую попытку,

return redirect()->back()->withErrors(['qtys.'.$key => __('The qty of the customer :customerTitle is less than allowed qty',['customerTitle' => $customerTitle])]);

Где $key является целым числом.

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