扩展包开发
要在 Laravel 扩展包中包含 Livewire 组件,需要在扩展包的服务提供者中注册它们。
单文件与多文件组件
对于单文件(SFC)和多文件(MFC)组件,在服务提供者的 boot() 方法中使用 addNamespace:
php
use Livewire\Livewire;
public function boot(): void
{
Livewire::addNamespace(
namespace: 'mypackage',
viewPath: __DIR__ . '/../resources/views/livewire',
);
}这会把扩展包 resources/views/livewire 目录下的所有 SFC 和 MFC 组件注册到 mypackage 命名空间下。
用法:
blade
<livewire:mypackage::counter />
<livewire:mypackage::users.table />基于类的组件
对于基于类的组件,需要提供额外参数,并把视图注册到 Laravel:
php
use Livewire\Livewire;
public function boot(): void
{
Livewire::addNamespace(
namespace: 'mypackage',
classNamespace: 'MyVendor\\MyPackage\\Livewire',
classPath: __DIR__ . '/Livewire',
classViewPath: __DIR__ . '/../resources/views/livewire',
);
$this->loadViewsFrom(__DIR__ . '/../resources/views', 'my-package');
}组件的 render() 方法应使用 Laravel 的扩展包命名空间语法引用视图:
php
public function render()
{
return view('my-package::livewire.counter');
}用法:
blade
<livewire:mypackage::counter />文件命名
Livewire 组件文件名中的 ⚡ 表情前缀在发布扩展包时可能与 Composer 冲突。扩展包开发请避免在组件文件名中使用闪电符号——用 counter.blade.php,不要用 ⚡counter.blade.php。