Выберите поле с первой опцией пустым

Кто-нибудь знает, как я могу установить в своем поле выбора первый вариант для пустого значения?

Я получаю данные из своей БД, и я хотел бы установить параметр по умолчанию как «Пожалуйста, выберите один вариант».

    Я обнаружил, что 'default'=>'Please select' не работает с требуемым атрибутом HTML5. Это работает:

     $listOfValues = [1 => 'Choice 1']; Form::select('fieldname',[null=>'Please Select'] + $listOfValues); 

    Если вам не нравится современный синтаксис PHP,

     $listOfValues = array(1 => 'Choice 1'); $listOfValues[null] = 'Please Select'; Form::select('fieldname', $listOfValues); 

    Но дело в том, чтобы иметь метку для нулевого значения.

    Для этого есть 2 способа:

     {{ Form::select('user', array('default' => 'Please select one option') + $users, 'default') }} 

    Или

     <select> <option selected disabled>Please select one option</option> @foreach($users as $user) <option value="{{ $user->id }}">{{ $user->name }}</option> @endforeach </select> 

    Если вы используете пакет HTML от LaravelCollective , вы делаете следующее.

     Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['placeholder' => 'Pick a size...']); 

    Для тех, кому это необходимо, этот способ работает нормально:

    контроллер:

     $entityArray = Entity::lists('name', 'id'); $entityArray->prepend('Select', 'Select'); 

    Посмотреть:

     {!! Form::select('entity', $entityArray) !!} 

    В Laravel 5.1 я решил это, сделав

     $categories = [''=>''] + Category::lists('name', 'id')->toArray(); return view('products.create', compact('categories')); 

    Или

     $categories = [''=>''] + Category::lists('name', 'id')->all(); return view('products.create', compact('categories')); 

    Результат 100%:

    В контроллере:

     $users = App\User::get()->lists('full_name', 'id')->prepend('Select user',''); return view('name of view')->with('users', $users); 

    Ввиду:

     {!! Form::select('who', $users, null, ['class' => 'form-control inline']) !!} 

    Я использую «laravelcollective / html»: пакет «^ 5.3.0»

    Это сработало для меня на Laravel 5.4.

     {{ Form::select('agency', $agency, null, [ 'placeholder' => 'Please select ...', 'class' => 'form-control' ]) }} 

    Для коллекции Laravel 5 вам может потребоваться сначала преобразовать коллекцию в массив.

     <?php $defaultSelection = [''=>'Please Select']; $users = $defaultSelection + $users->toArray();?> 

    и применять $ users как

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

    Добавление в Laerte anwser

    Вы можете сделать это на Blade level просто выполнив команду:

     {!! Form::select('entity', $entityArray) !!} 

    в контроллере

     $data['options']=Entity::pluck('name','id')->prepend('Please Select',''); return view('your_view_blade',$data); 

    в лезвии

     {!! Form::select('control_name',$options,null,['class'=>'your_class']) !!} 

    Вам нужно манипулировать массивом перед представлением

    или быть беспорядочным, вы могли бы сделать это в лезвии @php tags

      $users= [null => 'Empty']; $dbusers= User::pluck('id', 'name'); $users= array_merge($users, $dbusers->toArray()); return view('myview', compact('users')) 

    и затем вы можете сделать следующее в представлении

     {{ Form::select('user',$users, ['class' => 'form-control']) }} 

    В laravel 5.2

    Это сработало для меня

     {!! Form::select('user', $users, null, array('class'=>'form-control', 'placeholder' => 'Please select')) !!} 

    поскольку я просто добавляю placeholder и он сделал трюк

     {{ Form::select('parent_id', [null=>'Please Select'] + \App\Item::where('1','1')->pluck('name', 'id')->toArray()) }} 
     { !! Form::select('country', $country, 'GB', ['id' = > 'country', 'class' = > 'form-control select2me']) !!} 

    Здесь $country – массив, который содержит много стран, в этом массиве «великая Британия» по идентификатору «GB», который будет выбран по умолчанию.