2015-06-21 12 views
11

मैं एक चयन टैग के लिए एक डिफ़ॉल्ट मान बांधने की कोशिश कर रहा हूं। (एक "संपादन दृश्य" में)।लार्वा फॉर्म-मॉडल बाध्यकारी बहु चयन डिफ़ॉल्ट मान

मुझे पता है कि यह आसान होना चाहिए, लेकिन मुझे लगता है कि मुझे कुछ याद आ रहा है।

मेरे पास है:

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' => ['[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 
           ]) !!} 
... 

मैं अपने ब्लेड में एक डमी परीक्षण किया, और सही परिणाम मिल गया है:

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

यह मान कि डिफ़ॉल्ट रूप से चयनित किया जाना चाहिए सूचीबद्ध करता है ..

मैं भी डालने की कोशिश की $user->group_listForm::select से तीसरे पैरामीटर के रूप में, लेकिन यह ईथर काम नहीं किया ...

मुझे कोई संकेत नहीं है कि मैं क्या गलत कर रहा हूं .. इस पर कोई संकेत है?

संपादित

जब मैं कार्य करें:

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

आइटम सही रूप से चयन किया जाता है,

अब मुझे पता है मैं गहराई .. संग्रह से एक सरणी हड़पने के लिए है। :)

पाया गया

User.php:

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

यह आसान हो सकता है?

अच्छा संबंध है,

क्रिस्टोफ

+0

जूस FYI करें, आप कर सकते हैं कि 'getGroupListAttribute()' विधि 'User.php' – xhulio

+0

में मैं एक ऐसी ही समस्या का सामना किया है की घोषणा करने के लिए होने के बजाय 3 पैरामीटर में का उपयोग कर * अशक्त * बिना * फॉर्म :: select * अपने edit.blade व्यू में, अपने $ उपयोगकर्ता विशेषताओं को डालें। '$ उपयोगकर्ता-> समूह 'जैसी कुछ होगी। मैंने इसे एकल तत्व ड्रॉपडाउन के साथ किया है, लेकिन आपको इसे कई तत्वों के साथ परीक्षण करना होगा। – alariva

उत्तर

2

आप selected defaults (3) तर्क में null डाल नहीं करना चाहिए।

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

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

हालांकि यह काम करेगा, अगर आप ऐसा करते हैं तो आप मॉडल बाध्यकारी का उपयोग नहीं कर रहे हैं। –

संबंधित मुद्दे