joserick / laravel-livewire-discover
根据约定(componentNamespace)发现并自动加载多个 Livewire 组件
Requires
- livewire/livewire: ^3.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- orchestra/testbench: ^8.5
README
Laravel Livewire Discover
注意: 迁移到 v1.0 || 需要前一个版本 (v0.3)
自动发现和加载/注册多个/不同的类命名空间,用于 Livewire 组件。
安装
您可以通过 composer 安装此包
composer require joserick/laravel-livewire-discover
喜欢这个包吗? 
配置
添加到 AppServiceProvider.php
public function boot(): void { // Load multiples namespace for Livewire components. Livewire::discovers([ 'my-components', 'Namespaces\\Livewire', 'new-components', 'User\\Repository\\Livewire', ]); // Or individually Livewire::discover('my-components', 'Namespaces\\Livewire'); Livewire::discover('new-components', 'User\\Repository\\Livewire'); }
或者,如果您喜欢,可以在 Blade 模板 中使用 "componentNamespace" 函数
public function boot(): void { // Load multiples namespace for Livewire components. Livewire::componentNamespace('Namespaces\\Livewire', 'my-components'); Livewire::componentNamespace('User\\Repository\\Livewire', 'new-components'); // ... }
或者 使用以下配置: 'config/laravel-livewire-discover.php'
php artisan vendor:publish --tag livewire-discover-config
// Load the namespace to Livewire components. 'class_namespaces' => [ // 'prefix' => 'class\\namespace', 'my-components' => 'Namespaces\\Livewire', 'new-components' => 'User\\Repository\\Livewire', ],
使用
调用 Livewire 组件
<livewire:my-components.devices /> <!-- Class: Namespace\Livewire\Devices; --> <livewire:new-components.auth.login /> <!-- Class: User\Repository\Livewire\Auth\Login; --> <livewire:new-components.auth.register-admin /> <!-- Class: User\Repository\Livewire\Auth\RegisterAdmin; -->
或者使用表单路由
// Load Livewire Component from Route use Namespaces\Livewire\Devices; use User\Repository\Livewire\DevicesTable; Route::get('/devices', Devices::class); // resolve name my-components.devices Route::get('/devices_table', DevicesTable::class); // resolve name new-components.devices-table
"显然"您需要首先安装 "布局" 以设置路由
php artisan livewire:layout
组件创建的配置路径
如果您想根据前缀自动在特定目录中创建组件,您可以通过以下方式配置它
public function boot(): void { Livewire::discover('my-components', 'Namespaces\\Livewire', '/path/livewire'); }
创建组件
您可以使用以下 Artisan 命令自动创建文件。在此过程中,它会询问您要使用的前缀,不要忘记在前缀设置中放入路径。
php artisan make:livewire-discover RegisterAdmin
如果您喜欢 kebab-case 名称,您也可以使用它们
php artisan make:livewire-discover register-admin
您可以使用命名空间语法或点表示法在子目录中创建您的组件。例如,以下命令将在 Auth
子目录中创建一个 RegisterAdmin
组件
php artisan make:livewire-discover Auth\\RegisterAdmin
php artisan make:livewire-discover auth.register-admin
迁移到 v1
将 Livewire::discover
替换为 Livewire::componentNamespace
,因为 v1 中的属性是相反的,但 componentNamespace
函数保持了前版本的结构。
Livewire::discover('Namespaces\\Livewire', 'my-components');
到
Livewire::componentNamespace('Namespaces\\Livewire', 'my-components');
或者在任何情况下,为了保持对 discover()
函数的使用,您可以反转参数。
前缀与类名连接方式的变化,之前使用 "-" 连接,现在使用点表示法,因此必须在所有 Livewire-Discover 组件的调用中更改。
<livewire:components-devices />
到
<livewire:components.devices />
需要 v0.3.2
composer require joserick/laravel-livewire-discover:0.3.2
许可协议
GNU 公共许可证 (GPLv3)。请参阅 许可文件 获取更多信息。