joserick/laravel-livewire-discover

根据约定(componentNamespace)发现并自动加载多个 Livewire 组件

v1.0.0 2024-09-17 21:02 UTC

This package is auto-updated.

Last update: 2024-09-18 18:59:18 UTC


README

laravel_livewire_discover.jpg

Laravel Livewire Discover

Packagist Downloads GitHub License GitHub Release

注意: 迁移到 v1.0 || 需要前一个版本 (v0.3)

自动发现和加载/注册多个/不同的类命名空间,用于 Livewire 组件。

安装

您可以通过 composer 安装此包

composer require joserick/laravel-livewire-discover

喜欢这个包吗? "Buy Me A Coffee"

配置

添加到 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)。请参阅 许可文件 获取更多信息。