@tykus ok got this working I think - my show-clients blade file now...
<div>
<div class="mt-4">
<x-jet-label for="role" value="{{ __('Role') }}" />
<select id="role" wire:model="role_name" class="border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm block mt-1 w-5/12" name="role" autofocus>
@forelse($roles as $role)
<option value="{{ $role->name }}">{{ $role->name }}</option>
@empty
<option value="">No roles available</option>
@endforelse
</select>
</div>
@if(strpos($role_name, 'Client ')!==false)
<div class="mt-4">
<x-jet-label for="client" value="{{ __('Select Client') }}" />
<select id="client" class="border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm block mt-1 w-5/12" name="role" autofocus>
<option value="">Client list will be here eventually</option>
</select>
</div>
@endif
</div>
And my component class ShowClients.php:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use Spatie\Permission\Models\Role;
class ShowClients extends Component
{
public $role_name = null;
public function render()
{
$roles = Role::where('name', '!=', 'Super Administrator')->get();
return view('livewire.show-clients', ['roles' => $roles]);
}
}
Any issues or ways I could improve this?
My other question is how do I make Client required - but only when Role is Client Administrator or Client User?
Currently my rules in my StoreUserRequest.php are:
public function rules()
{
$user = $this->route('user');
return [
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $this->email,
'role' => 'required',
'password' => [
'required',
'string',
Password::min(8)
->mixedCase()
->numbers()
->symbols()
->uncompromised(),
'confirmed'
],
];
}
Thanks again for your help!