Выберите поле с первым пустым параметром
Кто-нибудь знает, как я могу установить в поле выбора первый параметр для пустого значения?
Я получаю данные из своей базы данных, и я хотел бы установить опцию по умолчанию как "Пожалуйста, выберите один вариант".
14 answers
Я обнаружил, что '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);
Но смысл в том, чтобы иметь метку для нулевого значения.
Если вы используете HTML-пакет от LaravelCollective, выполните следующие действия.
Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['placeholder' => 'Pick a size...']);
Для этого есть 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>
Для всех, кому нужно такое поведение, этот способ отлично работает:
Контроллер:
$entityArray = Entity::lists('name', 'id');
$entityArray->prepend('Select', 'Select');
Просмотр:
{!! Form::select('entity', $entityArray) !!}
Это сработало для меня на Laravel 5.4.
{{ Form::select('agency', $agency, null, [
'placeholder' => 'Please select ...',
'class' => 'form-control'
]) }}
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.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'));
Для коллекции Laravel 5 может потребоваться сначала преобразовать коллекцию в массив.
<?php
$defaultSelection = [''=>'Please Select'];
$users = $defaultSelection + $users->toArray();?>
И примените $users как
{!! Form::select('user', $users); !!}
В контроллере
$data['options']=Entity::pluck('name','id')->prepend('Please Select','');
return view('your_view_blade',$data);
В поле зрения лезвие
{!! Form::select('control_name',$options,null,['class'=>'your_class']) !!}
Добавление в Laerte anwser
Вы можете сделать это в Blade level
, просто выполнив команду:
{!! Form::select('entity', $entityArray) !!}
Вам нужно манипулировать массивом перед представлением
Или, чтобы быть грязным, вы могли бы сделать это в тегах blade @php
$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
- массив, содержащий множество стран, в этом массиве "Великобритания" по идентификатору "ГБ", который будет выбран по умолчанию.