Laravel Collective выбирает для вывода null при отправке

Я использую Laravel Collective для создания своей веб-формы.

{!! Form::select('сity_from', ['London', 'Tokyo', 'Moscow'], null, ['placeholder' =>  'Choose city'] )  !!}

который производит следующий HTML:

<select id="сity_from" name="сity_from">
<option selected="selected" disabled="disabled" hidden="hidden" value>Choose city</option>
<option value="London">London</option>
<option value="Tokyo">Tokyo</option>
<option value="Moscow">Moscow</option>

когда я не выбираю город и отправляю форму, а потом dd($request->all());в контроллере я ничего не вижу, я имею в виду, что нет $request->all()['city_from'];

Я хотел бы получить ['city_from' = null] в этом случае.

Я полагаю, мне нужно изменить «значение» в

<option selected="selected" disabled="disabled" hidden="hidden" value>Choose city</option>

значение = "нулевое"?

Или что-то другое?

Я хотел бы использовать Laravel Collective при решении этой проблемы.


person Sergej Fomin    schedule 26.07.2017    source источник
comment
Попробуйте в первую очередь сделать это без коллектива и посмотрите, работает ли он так, как ожидалось, чтобы вы могли быть уверены, действительно ли проблема связана с коллективом.   -  person Oluwatobi Samuel Omisakin    schedule 26.07.2017


Ответы (2)


Предлагаю не заморачиваться с наличием в запросе 'city_from'. Вы можете использовать $cityForm = $request->input('city_from');, а для $cityForm будет установлено фактическое значение или null.

public function store(Request $request)
{
    $cityForm = $request->input('city_from'); //will always be actual value or null
}
person Oleg    schedule 26.07.2017
comment
Спасибо, Олег. В контроллере я написал: $request_array = request()-›all(); $request_array['сity_from']= request()-›input('city_from'); дд ($ request_array); - person Sergej Fomin; 27.07.2017
comment
На самом деле, лучший способ передать запрос методу — внедрение зависимостей. Я отредактирую пост и покажу вам, как лучшие практики предлагают нам работать с запросами :) - person Oleg; 27.07.2017
comment
да, пожалуйста, отредактируйте. Я написал 'request()->input('city_from), потому что он находится в моем валидаторе FormRequest. (класс tourRequest расширяет FormRequest), и когда я использую $request, это не работает... Должен ли я добавить класс tourRequest, расширяющий FormRequest (Request $request)? - person Sergej Fomin; 27.07.2017
comment
Спасибо за редактирование поста, Олег, но я думаю, что все это немного усложнило. Мой главный вопрос заключался в том, как получить значение «city_from», равное «null», когда ничего не выбрано. Вы ответили на него в своем первом посте. Другим людям, задающим тот же вопрос, будет легче прочитать ваш исходный пост, чем отредактированный. Я бы посоветовал вам откатить его назад :) - person Sergej Fomin; 27.07.2017

удалять

disabled="disabled"

и добавить

value="null"

надеюсь решит проблему.

person Rafik Farhad    schedule 26.07.2017
comment
Я тоже на это надеюсь :) Но как это сделать в Laravel Collective?:) - person Sergej Fomin; 26.07.2017
comment
{!! Form::select('сity_from', [ 'null' =› 'Выберите', 'l' =› 'Лондон', 't' =› 'Токио', 'm' =› 'Москва'], 'null ' ) !!} Не проверял, но должно работать. Дайте мне знать, если у него есть какие-либо проблемы. - person Rafik Farhad; 26.07.2017