Skip to content
全部文档

扩展包开发

要在 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