2016-08-30 10 views
0

Я использую Laravel 5.3, Entrust для разрешений, LaravelCollective для функций формы и Chosen для управления полями выбора.Получение атрибутов модели для заполнения множественного выбора

я обязан моей формы модели и моя форма заполнения правильно, но я изо всех сил, чтобы заполнить мульти выбора со значениями, связанными с этой ролью (модели)

Я Усиливая Доверьте встроенный в отношениях. Я хочу, чтобы разрешения, связанные с ролью, отображались как выбранные значения в мультивыборке.

Так что что-то вроде $ role-> permissions-> name, но это, похоже, не работает. Значение null в параметрах формы является значением по умолчанию, но я не могу заставить его отображать все, что я хочу.

Вот моя форма:

   {!! Form::model($role, ['method' => 'PATCH', 'route' => ['settings.access.update_role', $role->id]]) !!} 
       <div class="form-group"> 
        {!! Form::label('Name') !!} 
        <div class="input-group"> 
         <div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div> 
         {!! Form::date('name', $role->name, ['class' => 'form-control']) !!} 
        </div> 
       </div> 
       <div class="form-group"> 
        {!! Form::label('Display Name') !!} 
        <div class="input-group"> 
         <div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div> 
         {!! Form::date('display_name', $role->display_name, ['class' => 'form-control']) !!} 
        </div> 
       </div> 
       <div class="form-group"> 
        {!! Form::label('Description') !!} 
        <div class="input-group"> 
         <div class="input-group-addon"><i class="fa fa-plus-circle" aria-hidden="true"></i></div> 
         {!! Form::date('description', $role->description, ['class' => 'form-control']) !!} 
        </div> 
       </div> 
       <div class="form-group"> 
        {!! Form::label('Permissions') !!} 
        <script type="text/javascript"> 
         $(document).ready(function() { 
          $(".permissions").chosen({width: "100%"}) 
         }); 
        </script> 
        <div class="input-group"> 
         <div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div> 
         {!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!} 
        </div> 
       </div> 
       <div class="form-group"> 
        <br/> 
        <div class="input-group"> 
         <span class="input-group-btn"> 
          <button class="btn btn-success" type="submit" name="add_user">Update</button> 
         </span> 
        </div> 
       </div> 
       {!! Form::close() !!} 

Вот часть моей формы в вопросе:

  <div class="form-group"> 
       {!! Form::label('Permissions') !!} 
       <script type="text/javascript"> 
        $(document).ready(function() { 
         $(".permissions").chosen({width: "100%"}) 
        }); 
       </script> 
       <div class="input-group"> 
        <div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div> 
        {!! Form::select('permissions[]', $permissions, null, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!} 
       </div> 
      </div> 

Вот моя функция контроллера, который посылает данные в форму:

public function edit_role($id) 
{ 
    $permissions = Permission::pluck('name', 'id'); 
    $role = Role::where('id', $id)->first(); 
    return view('settings.access.edit', compact('role', 'permissions')); 
} 

ответ

0

Мне удалось исправить свои проблемы, хотя и немного хакерским способом.

Мой edit_role контроллер теперь выглядит следующим образом:

public function edit_role($id) 
{ 
    $permissions = Permission::pluck('name', 'id'); 
    $role = Role::where('id', $id)->first(); 
    $role_permissions = Role::with('perms')->get(); 
    $items = array(); 
    foreach($role_permissions as $role_permission) 
    { 
     foreach($role_permission->perms as $permission){ 
      $items[] = $permission->id; 
     } 
    } 

    return view('settings.access.edit_role', compact('role', 'permissions', 'items')); 
} 

В основном то, что я сделал, это получить все разрешения, связанные с ролью и затем отливали каждого разрешения в «идентификатор» в массив, то я использую этот массив ('$') элементы для заполнения значения по умолчанию выбирает (нуль) следующим образом:

    <div class="form-group"> 
         {!! Form::label('Permissions') !!} 
         <script type="text/javascript"> 
          $(document).ready(function() { 
           $(".permissions").chosen({width: "100%"}) 
          }); 
         </script> 

         <div class="input-group"> 
          <div class="input-group-addon"><i class="fa fa-user-plus" aria-hidden="true"></i></div> 
          {!! Form::select('permissions[]', $permissions ,$items, ['multiple' => 'multiple', 'class' => ' form-control permissions']) !!} 
         </div> 
        </div> 


0

Хорошо сэр попробуйте это ...

return view('settings.access.edit', compact(['role', 'permissions']));