Связывание форм-моделей Laravel со множественным выбором значений по умолчанию

Я пытаюсь привязать значение по умолчанию к тегу выбора. (в "режиме редактирования").

Я знаю, что это должно быть легко, но я думаю, что что-то упустил.

Я имею:

User.php (моя модель пользователя)

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

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

UserController.php (мой контроллер)

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

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

edit.blade.php (вид)

...
{!! Form::model($user, ['method' => 'PATCH', 'action' => ['UserController@update', $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
                                ]) !!}
...

Я сделал фиктивный тест в своем клинке и получил правильные результаты:

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

Здесь перечислены значения, которые должны быть выбраны по умолчанию.

Я тоже пытался поставить $user->group_list в качестве третьего параметра из Form::select, но это не работает эфир...

Я понятия не имею, что я делаю не так... какие-нибудь намеки на это?

редактировать

когда я делаю:

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

Товар правильно выбран,

теперь я знаю, что мне нужно взять массив из коллекции.. копать глубже..:)

нашел это

User.php:

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

это может быть проще?

С наилучшими пожеланиями,

Kristof

1 ответ

Ты не должен ставить null в selected defaults (3-й) аргумент.

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

{!! Form::select(
        'group_list[]',
        $groups,
        $user->group_list,
        ['multiple' => true]
    )
!!}
Другие вопросы по тегам