2015-06-21 3 views
11

Ich versuche, einen Standardwert für einen ausgewählten Tag zu binden. (in einer "Bearbeitungsansicht").Laravel Form-Modell Binding Multis wählen Standardwerte

Ich weiß, das sollte einfach sein, aber ich denke, ich bin etwas fehlt.

ich habe:

User.php (mein Benutzermodell)

... 
    public function groups() 
{ 
    return $this->belongsToMany('App\Group'); 
} 

public function getGroupListAttribute() 
{ 
    return $this->groups->lists('id'); 
} 
... 

UserController.php (mein Controller)

... 
public function edit(User $user) 
{ 
    $groups = Group::lists('name', 'id'); 

    return view('users.admin.edit', compact('user', 'groups')); 
} 
... 

edit.blade.php (die Darstellung)

... 
{!! 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 
           ]) !!} 
... 

Ich habe eine Dummy-Test in meiner Klinge, und haben die richtigen Ergebnisse erhalten:

@foreach ($user->group_list as $item) 
    {{ $item }} 
@endforeach 

Dies sind die Werte, die standardmäßig ausgewählt werden sollte ..

Ich habe auch versucht zu setzen $user->group_list als dritter Parameter aus der Form::select, aber das hat nicht funktioniert Ether ...

Ich habe keine Ahnung, was ich falsch mache .. irgendwelche Hinweise zu diesem?

bearbeiten

, wenn ich tun:

public function getGroupListAttribute() 
{ 
    //return $this->groups->lists('id'); 
    return [1,5]; 
} 

Der Artikel richtig ausgewählt sind,

jetzt weiß ich, dass ich aus der Sammlung eine Reihe greifen müssen .. tiefer zu graben. . :)

gefunden

User.php:

... 
public function getGroupListAttribute() 
{ 
    return $this->groups->lists('id')->toArray(); 
} 
... 

es einfacher sein könnte?

Nizza Grüßen

Kristof

+0

jus FYI, können Sie das tun, ohne die 'getGroupListAttribute()' Methode mit erklären in 'User.php' – xhulio

+0

ich ein ähnliches Problem konfrontiert habe, statt mit * null * im 3. Parameter * Form :: select * in deiner edit.Blade-Ansicht, setze deine $ user-Attribute. Wäre etwas wie '$ user-> groups'. Ich habe dies mit einzelnen Dropdown-Elementen getan, aber Sie müssen dies mit mehreren Elementen testen. – alariva

Antwort

2

Sie nicht null im selected defaults (3.) Argument setzen sollte.

{!! Form::model($user, ['route' => ['user.update', $user->id]]) !!} 

{!! Form::select(
     'group_list[]', 
     $groups, 
     $user->group_list, 
     ['multiple' => true] 
    ) 
!!} 
+0

Während dies funktionieren würde, wenn Sie dies tun, sind Sie nicht mehr mit Modell verbindlich. –