2016-08-30 5 views
0

Ich verwende Laravel 5.3, Entrust für Berechtigungen, LaravelCollective für Formularfunktionalität und Chosen für die Auswahlfelder.Zuordnung von Modellattributen zum Auffüllen von Mehrfachauswahl

Ich habe meine Form zu einem Modell und meine Form ist bevölkert richtig gebunden, aber ich bin zu kämpfen das Mehr mit den mit dieser Rolle (Modell) zugeordnet Werten auswählen aufzufüllen

ich nutze Entrust integrierte in Beziehungen. Ich möchte die mit der Rolle verknüpften Berechtigungen als ausgewählte Werte in der Mehrfachauswahl erscheinen lassen.

So etwas wie $ Rolle-> Berechtigungen-> Name, aber das scheint nicht zu funktionieren. Der NULL-Wert in den Formularparametern ist der Standardwert, aber ich kann nicht so aussehen, als würde er alles anzeigen, was ich möchte.

Hier ist meine Form:

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

Hier ist der Teil meiner Form in Frage:

  <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> 

Hier ist meine Controller-Funktion, die Informationen in das Formular sendet:

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

Antwort

0

Ich schaffte es, meine Probleme zu beheben, wenn auch auf eine etwas hacky Art.

My edit_role-Controller sieht nun wie folgt aus:

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')); 
} 

Im Grunde, was ich getan habe, ist es, alle Berechtigungen mit einer Rolle zugeordnet und dann jeweils auf ein Feld ‚id‘ Erlaubnis geworfen habe ich dann dieses Array verwenden ('$ Artikel') zum Auffüllen des wählt Standardwert (null) wie folgt:

    <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

Nun, versuchen Sie dies ...

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