#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