2016-08-30 4 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')); 
} 

基本的に私がやったことは、私は、その配列を使用して、ロールに関連付けられたすべての権限を取得し、配列に各権限の「ID」をキャストしています以下のように( '$項目は、')選択のデフォルト値(null)を移入します

    <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'])); 
関連する問題