2016-09-27 2 views
6

При использовании bootstrap-select.js в сочетании с фасадом формы Laravel никакое значение не передается. dd() говорит нулевойbootstrap-select.js & Laravel Form Facade - no select "value"

{!! Form::select('user', $users, null, array('class' => 'selectpicker show-tick', 'data-live-search' => 'true', 'id' => 'user_select')) !!}

Однако при использовании формы фасада без бутстрапа-выбор, как это:

{!! Form::select('user', $users, null) !!}

это работает.

dd() говорит 1

+0

Что у вас 'dd()'? –

+0

'dd ($ request-> user);' – Scarwolf

+0

Проверьте форму обратной связи, я полагаю, что значение id => задает выбранного пользователя? Возможно, там что-то не так. – ree

ответ

3

При использовании Bootstrap выбора, Вы должны принести вход как:

Input::get('id_of_your_input'); 

и, если не используется Bootstrap выбора, вы должны сделать это следующим образом:

Input::get('name_of_your_input'); 

Coz bootstrap select создает другой вход для отправки с новым именем (извлеченный из исходного Идентификатора ввода) :)

Обновление Вы можете использовать dd(Input::all()), чтобы просмотреть все входы, отправленные контроллеру с их именами.

+0

О! Я использую 'Request $ request', поэтому' $ request-> user'. Возможно ли получить имя, подобное этому без 'Input ::'? – Scarwolf

+0

Ну 'dd (Input :: get ('user_select'));' все еще говорит 'null'. Вот как у меня сейчас есть мой выбор: '{!! Форма :: select ('user', $ users, null, array ('class' => 'show-tick', 'data-live-search' => 'true', 'id' => 'user_select')) !!} ' – Scarwolf

+0

Попробуйте' dd (Input :: all()) ', чтобы вы могли видеть все входы, отправленные на ваш контроллер вместе с их именами. :) – hamedmehryar

0

Простейшее воспроизведение Вашего дела:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css"/> 
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/js/bootstrap-select.min.js"></script> 

{!! Form::open() !!} 
    <select class="selectpicker show-tick" data-live-search="true" name="user"> 
     <option value="1">Marvin Test</option> 
     <option value="2">Lorem Ipsum</option> 
     <option value="3">Amy Johnson</option> 
     <option value="4">sdsd</option> 
     <option value="5">lol lol</option> 
     <option value="6">test test</option> 
    </select> 
    {!! Form::submit() !!} 
{!! Form::close() !!} 

dd($request->all() дает:

array:2 [▼ 
    "_token" => "GPsRkSn3GVK3zWZmJ2Rf7rQlZ75WVZ2c1JxHZgjy" 
    "user" => "6" 
] 

Маркер Скрытое поле автоматически добавляется. Вот почему я спросил в комментарии, если вы находитесь между Form::open и Form::close

+0

Я удалил 'Form :: token()'. но все же пользователь не переносится. Это из-за 'Form :: select()' в сочетании с bootstrap-select, может быть?Как я могу сделать это лучше с помощью массива пользователей? – Scarwolf

+0

ОК, я попытался написать выбор самым простым способом: http://pastebin.com/RRXUdNnh даже там, данные не отправляются ... ._. – Scarwolf

+0

@Scarwolf HTML, который вы вставили первым, был взят из источника страницы или фактически проверен браузером текущее состояние dom? – alepeino