Bonjour à tous,

J'ai fait une installation fraîche de Laravel dans laquelle j'ai combiné Jetstream-livewire et Spatie Permission en suivant ce tutoriel : "https://geisi.dev/blog/combining-laravel-jetstream-with-spatie-permissions/"
J'ai suivi ce tuto à la lettre donc, j'ai 3 rôles : Admin, Editor, Member et 4 permissions : view, create, update, delete.

Tout fonctionne correctement pour l'instant. A vrai dire, je n'ai pas encore regardé la gestion des rôles et des permissions. Bref !

Je commence a réaliser mon interface en voulant gérer les rôles et les permissions et pour cela, j'ai créé un composant livewire qui s'appelle : RolesShow.

L'idée est de pouvoir afficher un tableau avec les rôles et pour chaque rôles un sous tableau listant chaque permission.

J'ai donc créé un composant livewire dans lequel j'ai une fonction publique qui me retourne une collection qui contient, vraisemblablement, toutes les informations dont j'ai besoin mais je ne sais pas comment l'afficher.

Voici ma fonction :
`
class RolesShow extends Component
{
public function mount()
{
$this->role_permissions = Role::with('permissions')->get();

}

`

Et pour l'afficher dans ma page, j'ai une boucle foreach...

@foreach ($role_permissions as $role) <p>{{ $role->name }}</p> @endforeach

Quand j'appelle ma page, j'ai bien :
Admin
Editor
Member

Je souhaiterais pouvoir afficher plutôt :
Admin
view
create
update
delete

Editor
view
create
update

Member
view

La où je pêche, c'est pour lire le contenu de ma collection pour mon array 'Admin' dans ma collection, je ne sais pas comment le traduire en php.

J'espère avoir été clair dans mon explication et dans ce que je souhaite obtenir et que vous pourrez m'aider.

Merci d'avance pour votre aide.

1 réponse


Strappal
Auteur

Et bien je me réponds...

J'ai trouvé enfin la solution...

@foreach ($role_permissions as $role)
<p>{{ $role->name }}</p>
@foreach ($role->permissions as $permission)
<p>{{ $permission->name }}</p>
@endforeach
@endforeach

J'ai simplement créé une nouvelle boucle sur ce que je pense être la clé de ma collection.