Overview
LaraCMS uses Laravel Livewire for reactive, dynamic components without writing JavaScript. Components are located inapp/Livewire/ and follow a structured namespace organization.
Configuration
Livewire configuration is defined inconfig/livewire.php:
Key Configuration Options
- Component Locations: Views are stored in
resources/views/livewire/ - Class Namespace: All components use
App\Livewirenamespace - Pagination: Uses Tailwind CSS theme by default
- Layout: Default layout is
layouts::app
Component Structure
Livewire components in LaraCMS are organized by feature:Component Examples
Basic Component
The simplest component structure (app/Livewire/Admin/BlogList.php):
Component with Data Binding
TheBlogEdit component passes data to its view:
Advanced Component Patterns
Pagination Component
TheUserList component demonstrates pagination, search, and sorting (app/Livewire/Admin/UserList.php):
Key Features:
- WithPagination trait: Enables pagination
- Query string binding: Preserves state in URL
- Real-time search: Auto-resets pagination on search
- Dynamic sorting: Toggle sort direction on column click
- Modal dialogs: Confirmation before delete actions
- Flash messages: User feedback after operations
Gallery Management Component
TheManagealbum component shows form handling and media uploads:
Key Features:
- Form validation: Laravel validation rules
- Media handling: Integration with Spatie Media Library
- Event dispatching: Notify other components
- State reset: Clear form after submission
- Relationship management: Detach related models on delete
Authentication Component
TheLogin component uses Livewire attributes for validation:
Key Features:
- Attribute validation: Modern PHP 8 attributes for validation
- Rate limiting: Protect against brute force attacks
- Custom layout: Uses
#[Layout]attribute - Session management: Regenerate session on login
- SPA navigation:
wire:navigatefor smooth transitions
Component Views
Corresponding Blade views use Livewire directives:Livewire Directives
Data Binding
wire:model.live- Real-time updateswire:model.live.debounce- Debounced updateswire:model.defer- Update on form submit
Actions
wire:click- Trigger component methodswire:submit- Handle form submissionwire:confirm- Confirmation dialog
Navigation
wire:navigate- SPA-like navigation
Creating Custom Components
Generate a Component
app/Livewire/Admin/CustomComponent.phpresources/views/livewire/admin/custom-component.blade.php
Component Template
Best Practices
1. Use Query String for State
Preserve component state in the URL:2. Reset Pagination on Filter Changes
3. Use Events for Component Communication
4. Optimize Queries
Eager load relationships to prevent N+1 queries:5. Validate User Input
Always validate data before processing:Performance Optimization
Lazy Loading
Payload Limits
Configured inconfig/livewire.php:
Next Steps
- Explore Artisan Commands
- Learn about Customization
- Review Configuration Options