web-dev-qa-db-fra.com

Cochez la case avec la première option vide

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".

26
JaviZu

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.

44
darkbluesun

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...']);
22
endroo

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>
19
mauricehofman

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) !!}
13
Laerte

Cela a fonctionné pour moi sur Laravel 5.4.

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

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'));
2
sanu

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); !!}
1
StevenW

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']) !!}
1
md asif rahman

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']) }}
0
Mooseh

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

0
Yousef Altaf

Ajout à la réponse de Laerte

Vous pouvez le faire au Blade level simplement en émettant une commande:

{!! Form::select('entity', $entityArray) !!}
0
Hairmenu
{{ Form::select('parent_id', [null=>'Please Select'] + \App\Item::where('1','1')->pluck('name', 'id')->toArray()) }}
0
Gediminas