Sto tentando di associare un valore predefinito a un tag select. (in una "modifica vista").Laravel Form-Model Binding multi select default values
So che questo dovrebbe essere facile, ma penso che mi manchi qualcosa.
ho:
User.php (il mio modello di utente)
...
public function groups()
{
return $this->belongsToMany('App\Group');
}
public function getGroupListAttribute()
{
return $this->groups->lists('id');
}
...
UserController.php (il mio controller)
...
public function edit(User $user)
{
$groups = Group::lists('name', 'id');
return view('users.admin.edit', compact('user', 'groups'));
}
...
edit.blade.php (la vista)
...
{!! Form::model($user, ['method' => 'PATCH', 'action' => ['[email protected]', $user->id]]) !!}
...
...
// the form should be binded by the attribute 'group_list' created
// at the second block of 'User.php'
// performing a $user->group_list gets me the correct values
{!! Form::select('group_list[]', $groups, null, [
'class' => 'form-control',
'id' => 'grouplist',
'multiple' => true
]) !!}
...
ho fatto un test manichino in mia lama, e hanno ottenuto i risultati corretti:
@foreach ($user->group_list as $item)
{{ $item }}
@endforeach
Questo elenca i valori che dovrebbero essere selezionati per default ..
Ho anche provato a mettere $user->group_list
come terzo parametro dal Form::select
, ma questo non ha funzionato l'etere ...
Non ho idea di cosa sto facendo male .. qualche suggerimento su questo?
modificare
quando lo faccio:
public function getGroupListAttribute()
{
//return $this->groups->lists('id');
return [1,5];
}
La voce siano correttamente selezionati,
ora so di avere per afferrare una matrice dalla collezione .. scavare più in profondità. . :)
trovato
User.php:
...
public function getGroupListAttribute()
{
return $this->groups->lists('id')->toArray();
}
...
Potrebbe essere più facile?
Nizza saluti,
Kristof
jus cronaca, è possibile farlo senza dover dichiarare il() metodo 'getGroupListAttribute in' User.php' – xhulio
Ho affrontato un problema simile, invece di utilizzare * nulla * nel 3 ° parametro * Forma :: seleziona * nella tua vista edit.blade, inserisci i tuoi attributi utente $. Sarebbe qualcosa come '$ user-> groups'. Ho fatto questo con dropdown di singoli elementi, ma devi testarlo con più elementi. – alariva