Saltar al contenido
← Volver a proyectos

Laravel Modular Livewire

The official Livewire bridge for Laravel Modular offering automatic discovery and registration of modular Livewire components.

#Laravel Modular Livewire ⚡

Latest Version on Packagist GitHub Tests Action Status Total Downloads License

Laravel Modular Livewire is the official bridge for Laravel Modular. It enables automatic discovery, registration, and first-class Artisan support for Livewire components within your modular architecture.

#✨ Features

  • 🔍 Automatic Discovery: Automatically scans and registers Livewire components in Modules/*/app/Livewire.
  • 🏗️ Modular Artisan Command: Enhanced make:livewire command with --module support.
  • 🎨 Namespace Isolation: Components are automatically prefixed with the module name (e.g., <livewire:blog::post-list />).
  • Performance Optimized: Intelligent component caching for zero-overhead in production.
  • 🩺 Diagnostics Ready: Designed for Laravel Modular 1.2 modular:doctor, modular:status, modular:debug, and modular:test.
  • 🤖 Laravel Boost Support: Ships Boost guidance for module-owned Livewire components.
  • Strictly Typed: Fully compatible with PHPStan level 5 (and scalable to level 9).

#🚀 Installation

Install the package via Composer (requires alizharb/laravel-modular):

composer require alizharb/laravel-modular-livewire

The service provider will be automatically registered. It will automatically hook into the laravel-modular registry.


#📖 Usage

#Generating Modular Components

Use the native make:livewire command with the --module flag to generate any Livewire 4 component type.

#1. Single-File Components (Default)

The modern Livewire 4 standard. Everything in one .blade.php file.

php artisan make:livewire Status --module=Blog
  • Creates: Modules/Blog/resources/views/livewire/⚡status.blade.php
  • Identifier: blog::status

#2. Class-Based Components

The traditional separate Class and Template structure.

php artisan make:livewire Analytics --module=Blog --class
  • Class: Modules/Blog/app/Livewire/Analytics.php
  • View: Modules/Blog/resources/views/livewire/analytics.blade.php

#3. Multi-File Components (MFC)

Perfect for complex components with dedicated JS and CSS.

php artisan make:livewire Dashboard --module=Blog --mfc
  • Creates: Modules/Blog/resources/views/livewire/⚡dashboard/ (Directory containing .php, .blade.php, .js, .css)

#4. Page Components (Preferred for Routing)

Use the pages:: prefix for full-page components to keep them logically separated from UI fragments.

php artisan make:livewire pages::post.create --module=Blog
  • Creates: Modules/Blog/resources/views/livewire/pages/⚡create.blade.php
  • Identifier: blog::pages::post.create

#Routing (Livewire 4)

Laravel Modular Livewire fully supports Livewire 4's native Route::livewire() for full-page modular components.

#Using Class-based Routes

use Modules\Blog\Livewire\Analytics;
use Illuminate\Support\Facades\Route;

Route::livewire('/blog/analytics', Analytics::class);

#Using Modular Aliases

// Resolves to the single-file or class-based component
Route::livewire('/blog/status', 'blog::status');

// Full-page component via modular alias
Route::livewire('/blog/create', 'blog::pages::post.create');

// Example from Test module
Route::livewire('/blog/create', 'blog::pages::post.create');

#Using Components in Blade

In your Blade views, use the module's alias as the namespace:

{{-- Traditional or Single-file --}}
<livewire:blog::status />

{{-- Specialized Page Components --}}
<livewire:blog::pages::post.create />

{{-- Example from Blog module --}}
<livewire:blog::pages::post.create />

#⚙️ Configuration

The bridge respects your existing modular.php paths and Livewire's own configuration. No additional configuration is required.

#Diagnostics

After changing module Livewire paths or manifests, run:

php artisan modular:doctor
php artisan modular:check
php artisan modular:test Blog

If alizharb/laravel-themer is installed, the make:livewire bridge also supports --theme=theme-slug for theme-scoped Livewire components.


#📦 Related Packages

Explore the rest of the Laravel Modular ecosystem:


#🧪 Testing

vendor/bin/pest

#🤝 Contributing

Please see CONTRIBUTING for details.

#📄 License

The MIT License (MIT). Please see License File for more information.


Made with ❤️ by Ali Harb

Nueva versión disponible.