Est-ce que quelqu'un sait comment puis-je définir dans ma zone de sélection la première option permettant de vider une valeur?
Je reçois les données de ma base de données et j'aimerais définir l'option par défaut comme "Veuillez sélectionner une option".
J'ai constaté que 'default'=>'Please select'
ne fonctionnait pas avec l'attribut HTML5 obligatoire .
$listOfValues = [1 => 'Choice 1'];
Form::select('fieldname',[null=>'Please Select'] + $listOfValues);
Si vous n'aimez pas la syntaxe moderne PHP,
$listOfValues = array(1 => 'Choice 1');
$listOfValues[null] = 'Please Select';
Form::select('fieldname', $listOfValues);
Mais l’important est d’avoir une étiquette pour la valeur nulle.
Si vous utilisez le paquet HTML de LaravelCollective , vous procédez comme suit.
Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['placeholder' => 'Pick a size...']);
Il y a 2 méthodes pour le faire:
{{ Form::select('user', array('default' => 'Please select one option') + $users, 'default') }}
Ou
<select>
<option selected disabled>Please select one option</option>
@foreach($users as $user)
<option value="{{ $user->id }}">{{ $user->name }}</option>
@endforeach
</select>
Pour tous ceux qui ont besoin de ce comportement, cette méthode fonctionne bien:
Manette:
$entityArray = Entity::lists('name', 'id');
$entityArray->prepend('Select', 'Select');
Vue:
{!! Form::select('entity', $entityArray) !!}
Cela a fonctionné pour moi sur Laravel 5.4.
{{ Form::select('agency', $agency, null, [
'placeholder' => 'Please select ...',
'class' => 'form-control'
]) }}
100% résultat:
Dans le contrôleur:
$users = App\User::get()->lists('full_name', 'id')->prepend('Select user','');
return view('name of view')->with('users', $users);
En vue:
{!! Form::select('who', $users, null, ['class' => 'form-control inline']) !!}
J'utilise le package "laravelcollective/html": "^ 5.3.0"
Dans Laravel 5.1 je l'ai résolu en faisant
$categories = [''=>''] + Category::lists('name', 'id')->toArray();
return view('products.create', compact('categories'));
Ou
$categories = [''=>''] + Category::lists('name', 'id')->all();
return view('products.create', compact('categories'));
Pour une collection Laravel 5, vous devrez peut-être d'abord convertir la collection en tableau.
<?php
$defaultSelection = [''=>'Please Select'];
$users = $defaultSelection + $users->toArray();?>
et appliquer $ utilisateurs en tant que
{!! Form::select('user', $users); !!}
dans le contrôleur
$data['options']=Entity::pluck('name','id')->prepend('Please Select','');
return view('your_view_blade',$data);
en vue lame
{!! Form::select('control_name',$options,null,['class'=>'your_class']) !!}
Vous devez manipuler le tableau avant la vue
ou pour être en désordre, vous pouvez le faire dans les balises blade @php
$users= [null => 'Empty'];
$dbusers= User::pluck('id', 'name');
$users= array_merge($users, $dbusers->toArray());
return view('myview', compact('users'))
et alors vous pouvez faire ce qui suit dans la vue
{{ Form::select('user',$users, ['class' => 'form-control']) }}
En laravel 5.2
Cela a fonctionné pour moi
{!! Form::select('user', $users, null, array('class'=>'form-control', 'placeholder' => 'Please select')) !!}
comme je viens d'ajouter placeholder
et il a fait le tour
Ajout à la réponse de Laerte
Vous pouvez le faire au Blade level
simplement en émettant une commande:
{!! Form::select('entity', $entityArray) !!}
{{ Form::select('parent_id', [null=>'Please Select'] + \App\Item::where('1','1')->pluck('name', 'id')->toArray()) }}