2015-06-21 19 views
11

Tôi đang cố gắng ràng buộc một giá trị mặc định cho một thẻ được chọn. (trong "chế độ xem chỉnh sửa").Ràng buộc kiểu mẫu-mô hình Laravel đa chọn giá trị mặc định

Tôi biết điều này sẽ dễ dàng, nhưng tôi nghĩ tôi đang thiếu điều gì đó.

tôi có:

user.php (mô hình người dùng của tôi)

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

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

UserController.php (điều khiển của tôi)

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

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

edit.blade.php (chế độ xem)

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

Tôi đã làm một thử nghiệm giả trong lưỡi của tôi, và đã nhận được kết quả chính xác:

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

này liệt kê các giá trị mà nên được chọn theo mặc định ..

Tôi cũng đã cố gắng để đưa $user->group_list làm thông số thứ ba từ Form::select, nhưng điều này không làm việc ête ...

Tôi không có đầu mối gì tôi đang làm sai .. bất kỳ gợi ý nào về điều này?

chỉnh sửa

khi tôi làm:

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

Các mục được lựa chọn một cách chính xác,

bây giờ tôi biết tôi phải lấy một mảng từ bộ sưu tập .. đào sâu hơn. . :)

tìm thấy nó

user.php:

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

nó có thể được dễ dàng hơn?

đẹp regards,

Kristof

+0

jus FYI, bạn có thể làm điều đó mà không cần phải khai báo getGroupListAttribute() 'phương pháp 'trong' User.php' – xhulio

+0

tôi đã phải đối mặt với một vấn đề tương tự, thay vì sử dụng * vô * trong tham số thứ 3 của * Biểu mẫu :: chọn * trong chế độ xem edit.blade của bạn, đặt thuộc tính $ user của bạn. Sẽ giống như '$ user-> groups'. Tôi đã làm điều này với dropdowns phần tử đơn lẻ, nhưng bạn phải kiểm tra điều này với nhiều phần tử. – alariva

Trả lời

2

Bạn không nên đặt null trong selected defaults (3) lập luận.

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

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

Trong khi điều này sẽ làm việc, nếu bạn làm điều này bạn không còn sử dụng mô hình ràng buộc. –

Các vấn đề liên quan