Флажок 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

Массив PermissionList:

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 такими же, как и массив списка, а также сделать его $ permission = [‘permissions.15’]; или $ permission = [15] и т. д., но я не могу выбрать разрешения, назначенные роли.

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


person Louwki    schedule 27.10.2020    source источник


Ответы (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
person Louwki    schedule 03.11.2020