I been searching all over the documentation and internet to find how to do it.
I can see that Jetstream has team-member-manager.php where you can set new members and assign roles to them. They can list this via this
<!-- Role -->
@if (count($this->roles) > 0)
<div class="col-span-6 lg:col-span-4">
<x-jet-label for="role" value="{{ __('Role') }}" />
<x-jet-input-error for="role" class="mt-2" />
<div class="mt-1 border border-gray-200 rounded-lg cursor-pointer">
@foreach ($this->roles as $index => $role)
<div class="px-4 py-3 {{ $index > 0 ? 'border-t border-gray-200' : '' }}"
wire:click="$set('addTeamMemberForm.role', '{{ $role->key }}')">
<div class="{{ isset($addTeamMemberForm['role']) && $addTeamMemberForm['role'] !== $role->key ? 'opacity-50' : '' }}">
<!-- Role Name -->
<div class="flex items-center">
<div class="text-sm text-gray-600 {{ $addTeamMemberForm['role'] == $role->key ? 'font-semibold' : '' }}">
{{ $role->name }}
</div>
@if ($addTeamMemberForm['role'] == $role->key)
<svg class="ml-2 h-5 w-5 text-green-400" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
@endif
</div>
<!-- Role Description -->
<div class="mt-2 text-xs text-gray-600">
{{ $role->description }}
</div>
</div>
</div>
@endforeach
</div>
</div>
@endif
now I want use this kind of matter on other blade, but I can't seem to work how $this->roles
coming from.
Thank you
This is the code powers the blade you wanted.
So as you can see that the code is where the magic happens, it's called dynamic property I think. This means when you have a method like this getRolesProperty()
you can access it at the frontend like this $this->roles
;
/**
* Get the available team member roles.
*
* @return array
*/
public function getRolesProperty()
{
return array_values(Jetstream::$roles);
}
You can just copy the component and modify it for your need and then return your own view.