Флажок Livewire Selected

#laravel #laravel-livewire

#laravel #laravel-livewire

Вопрос:

У меня возникли проблемы при попытке отобразить список разрешений из базы данных, а затем при попытке отредактировать роль и ее разрешения, я не могу получить форму, в которой будут указаны разрешения, назначенные для проверяемой роли.

PHP:

 public $role;

public $permissions

public $permissionList;

public function render(PermissionService $permissionService)
{
    $this->permissionList = $permissionService->getPermissions();
    $this->permissions = $permissionService->getRolePermissions($this->role);

    return view('livewire.roles.edit');
}
  

Вид:

 @foreach($permissionList as $key => $permission)
       <div class="form-row">
            <div class="form-group col-md-6 h5">
                {{ ucfirst($key) }}
             </div>
            <div class="form-group col-md-6">
            @foreach($permission as $item)
               <div>
                 <input type="checkbox" id="{{ $item['id'] }}" name="{{ $item['id'] }}" value="{{ $item['id'] }}" wire:model="permissions.{{ $item['id'] }}"/> {{ ucfirst($item['name']) }}
               </div>
             @endforeach
         </div>
         <hr/>
    </div>
   @endforeach
  

Массив списка разрешений:

 array:4 [▼
  "administration" => array:1 [▼
    0 => array:2 [▼
      "id" => 15
      "name" => "preferences"
    ]
  ]
  "users" => array:5 [▼
    1 => array:2 [▼
      "id" => 16
      "name" => "view"
    ]
    2 => array:2 [▼
      "id" => 17
      "name" => "create"
    ]
    3 => array:2 [▼
      "id" => 18
      "name" => "edit"
    ]
    4 => array:2 [▼
      "id" => 19
      "name" => "delete"
    ]
    5 => array:2 [▼
      "id" => 20
      "name" => "impersonate"
    ]
  ]
  

Я создал массив списка разрешений для категории и разрешений, назначенных этой категории, исключительно для целей отображения.

Я попытался сделать $permissions таким же, как у массива list, а также сделать его $permission = [‘permissions.15’]; или $permission = [15] и т. Д., Но я не могу выбрать разрешения, назначенные для выбранной роли.

Любая помощь будет принята с благодарностью. Спасибо

Ответ №1:

Хорошо, мне просто нужно было заставить возвращаемый массив использовать идентификатор в качестве индекса, и тогда вам не нужно выполнять foreach для проверяемого, и все работает, как ожидалось.

 array:4 [▼
  "administration" => array:1 [▼
     15 => array:2 [▼
        "name" => "preferences"
     ]
  ]
  "users" => array:5 [▼
     16 => array:2 [▼
        "name" => "view"
     ]
     17 => array:2 [▼
        "name" => "create"
     ]
     18 => array:2 [▼
        "name" => "edit"
     ]
     19 => array:2 [▼
        "name" => "delete"
     ]
   ]
]
  

Вид:

 @foreach($permissionList as $key => $permission)
   <div class="form-row">
        <div class="form-group col-md-6 h5">
            {{ ucfirst($key) }}
         </div>
        <div class="form-group col-md-6">
         @foreach($permission as $index => $item)
           <div>
              <input type="checkbox" id="{{ $index }}" name="{{ $index }}" value="1" wire:model="permissions.{{ $key }}.{{ $index }}"/> {{ ucfirst($item['name']) }}
            </div>
         @endforeach
     </div>
     <hr/>
</div>
@endforeach