sortField = 'name'; $this->sortDirection = 'asc'; } public function sortBy(string $field): void { if ($this->sortField === $field) { $this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc'; } else { $this->sortDirection = 'asc'; } $this->sortField = $field; } // Die Hauptmethode, um Daten zu laden public function users() { return User::query() ->when($this->search, fn($query, $search) => $query->where('name', 'like', '%' . $search . '%') ->orWhere('email', 'like', '%' . $search . '%') ) ->when($this->statusFilter, fn($query, $status) => $query->where('status', $status) ) ->when($this->roleFilter, fn($query, $role) => $query->where('role', $role) // oder 'role_id' wenn du IDs verwendest ) ->orderBy($this->sortField, $this->sortDirection) ->paginate(10); // 10 Einträge pro Seite } // Optional: Lifecycle hook für das Zurücksetzen der Paginierung bei Suche/Filterung public function updatedSearch() { $this->resetPage(); } public function updatedStatusFilter() { $this->resetPage(); } public function updatedRoleFilter() { $this->resetPage(); } // Wird für die Paginierung mit Tailwind benötigt (Standard in Livewire 3) // Wenn FluxUI Bootstrap-basierte Paginierung braucht, musst du das anpassen // public function paginationView() // { // return 'vendor.livewire.tailwind'; // oder 'livewire::bootstrap' // } // Wenn du mit Relationen arbeitest (z.B. user->role->name) // public function with(): array // { // return [ // 'users' => User::with(['role', 'group']) // Eager loading // // ... deine Query-Logik von oben ... // ->paginate(10), // ]; // } }; ?>
{{-- Filter und Suchleiste (Beispiel, FluxUI Klassen anpassen) --}}
{{-- Tabelle (FluxUI Klassen anpassen!) --}}
{{-- FluxUI Klasse für Thead --}} {{-- FluxUI Klasse für Tbody --}} @forelse ($this->users() as $user) @empty @endforelse
Name @if($sortField === 'name'){{ $sortDirection === 'asc' ? '▲' : '▼' }}@endif E-Mail @if($sortField === 'email'){{ $sortDirection === 'asc' ? '▲' : '▼' }}@endif Status @if($sortField === 'status'){{ $sortDirection === 'asc' ? '▲' : '▼' }}@endif Rolle @if($sortField === 'role'){{ $sortDirection === 'asc' ? '▲' : '▼' }}@endif Gruppe Rechte Aktionen
{{ $user->name }} {{ $user->email }} {{ ucfirst($user->status) }} {{ $user->role }} {{-- Oder $user->role->name, wenn es eine Relation ist --}} {{ $user->group }} {{-- Oder $user->group->name --}} {{-- Darstellung der Rechte. Wenn es eine Many-to-Many Relation ist: --}} {{-- @foreach($user->permissions as $permission) {{ $permission->name }} @endforeach --}} {{-- Oder wenn es ein JSON-Feld ist, musst du es parsen und anzeigen --}} Einfache Rechte-Anzeige (Todo) Bearbeiten {{-- FluxUI Button-Klassen --}} {{-- FluxUI Button-Klassen --}}
Keine Benutzer gefunden.
{{ $this->users()->links() }} {{-- Stellt sicher, dass die Paginierungs-Views für dein UI-Kit konfiguriert sind --}}