tanthammar/livewire-auto-routes

自动为 Laravel Livewire 组件生成路由。

1.1.1 2021-05-18 14:24 UTC

This package is auto-updated.

Last update: 2024-09-16 15:46:35 UTC


README

自动为 Laravel Livewire 组件生成路由。

Latest Stable Version Latest Unstable Version Total Downloads GitHub issues GitHub stars Software License

要求

  • Livewire 2
  • Laravel 8
  • php 8

使用 Spatie 包

在安装此包之前,我建议您尝试 Spatie Laravel Route Attributes

安装

composer require tanthammar/livewire-auto-routes

web.php 中的路由具有优先权!

您可以使用 web.php 作为正常使用。在 web.php 中声明的路由将在 Livewire 组件中注册的路由之后注册。

用法

  • 您可以通过特性或通过向您的 Livewire 组件添加一个 route() 方法来生成路由。
  • 您的 Livewire 组件可以存在于 app 命名空间内的任何文件夹中。
  • 如果您没有添加任何特性或 route() 方法,则 Livewire 组件将视为普通组件,因此会被此包忽略。

访客路由特性

  • 应用 guest 中间件。
  • 该属性用于生成路由名称和 URL。
use Tanthammar\LivewireAutoRoutes\HasGuestRoute;

class FooComponent extends \Livewire\Component
{
    use HasGuestRoute;
    
    protected string $guestRoute = '/foo/{id}/edit'; //route name becomes 'foo.id.edit'
}

认证路由特性

  • 应用 auth 中间件。
  • 该属性用于生成路由名称和 URL。
use Tanthammar\LivewireAutoRoutes\HasAuthRoute;

class FooComponent extends \Livewire\Component
{
    use HasAuthRoute;
    
    protected string $authRoute = '/foo/{name?}'; //route name becomes 'foo.name'
}

自定义路由

选项 1

像在 web.php 中声明路由一样声明路由

use Illuminate\Support\Facades\Route;

class FooComponent extends \Livewire\Component
{
    public function route(): \Illuminate\Routing\Route|array
    {
        return Route::get('foo', static::class)
            ->middleware('auth') //default middleware is 'web'
            ->name('foo');
    }
}

选项 2,使用 RouteMaker

RouteMaker 可以从路由定义自动生成路由名称,但这不是必须的。

use Tanthammar\LivewireAutoRoutes\RouteMaker;

class FooComponent extends \Livewire\Component
{
    public function route(): RouteMaker
    {
        return new RouteMaker(
            route: 'users/{id}/edit', //if you omit $name, this route name will become 'users.id.edit'
            middleware: ['auth:sanctum', 'verified'],
            component: static::class,
            name: 'users.edit' //OPTIONAL, else $name will be generated from $route
        );
    }
}

路由按字母顺序注册!

Livewire 组件 文件app 命名空间 中按字母顺序循环。控制加载顺序的一种方法是将组件分组到具有适当名称的子文件夹中,例如 routeGroupArouteGroupB,其中 "routeGroupA" 中的路由将先于 "routeGroupB" 中的路由注册。

使用特性的示例

建议保持可控的命名结构以避免路由冲突。如果您想要更好的命名,请使用 RouteMaker

💬 让我们连接

在官方 Livewire Discord 频道与其他 tall-form 用户进行讨论。您可以在 "partners/tall-forms" 频道找到我。

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全相关的问题,请提交问题。

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。