blockpc/select2-wire

免费的 Select2 Livewire 包

v1.1.1 2022-01-20 23:37 UTC

This package is auto-updated.

Last update: 2024-09-22 03:38:26 UTC


README

read plis

这个包已经过时了...我发现创建一个 Laravel 的 select2 非常简单,查看这个 git https://gist.github.com/blockpc/5878e8d02b1fa33a9e13ab912e9a6440 现在的 gist 是旧版本,但如何解释取决于每个人,基本是一样的

旧版本

此包通过命令创建 select2 Livewire 组件。该包是在 TALL 堆栈下构建的。请确保您有要求(参见 composer.json)。一个命令创建一个 Livewire 组件及其视图,并提供创建一个接收父组件基本事件的 trait 的选项。

安装

    composer require blockpc/select2-wire

命令

单个组件 创建一个作为单个可选的组件,允许您动态添加数据

    php artisan select2:single

多个组件 创建一个作为多个可选的组件,允许您动态添加数据,数据必须由逗号分隔

    php artisan select2:multiple

删除组件 此命令会删除创建的组件

    php artisan select2:delete

单个组件 Foo

    php artisan select2:single foo

此命令创建一个 单个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Foo 相关。

单个组件 Foo 与模型 Baz

    php artisan select2:single foo --model=baz
    # or
    php artisan select2:single foo -m baz

此命令创建一个 单个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Baz 相关。

单个组件 Foo 与模型 Baz 和父模型 Taz

这是建议的命令。它具有与其他命令相同的行为,但添加了一些事件(和监听器),允许您与外部组件交互(例如 CRUD)。它还允许您创建一个 trait 来帮助您完成此操作。

    php artisan select2:single foo --model=baz --parent=taz
    # or
    php artisan select2:single foo -m baz -p taz

此命令创建一个 单个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Baz 相关和父模型 Taz,如果您需要与外部组件交互,则可以创建一个 trait(位于目录 app Livewire/Select2/Traits/SingleSelect2.php 下)

多个组件 Foo

    php artisan select2:multiple foo

此命令创建一个 多个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Foo 相关。

多个组件 Foo 与模型 Baz

    php artisan select2:multiple foo --model=baz
    # or
    php artisan select2:multiple foo -m baz

此命令创建一个 多个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Baz 相关。

多个组件 Foo 与模型 Baz 和父模型 Taz

这是建议的命令。它具有与其他命令相同的行为,但添加了一些事件(和监听器),允许您与外部组件交互(例如 CRUD)。它还允许您创建一个 trait 来帮助您完成此操作。

    php artisan select2:multiple foo --model=baz --parent=taz
    # or
    php artisan select2:multiple foo -m baz -p taz

此命令创建一个 多个 组件 select2 类(位于目录 app Livewire/Select2/FooSelect2.php 下)和一个视图(位于目录 resource livewire/select2/foo-select2.blade.php 下),与模型 Baz 相关和父模型 Taz,如果您需要与外部组件交互,则可以创建一个 trait(位于目录 app Livewire/Select2/Traits/MultipleSelect2.php 下)

用法

让我们假设

我们的公司销售车辆,每辆车都有一个代码,一个品牌,可以是各种颜色。

从上面的阅读中,我们了解到我们有一个名为 父模型vehicle。每个都有一个名称、一个品牌,可以是多种颜色。

在示例目录中,您将找到本教程所需的全部文件

品牌

该模型brand与父模型vehicle存在一对一关系
一辆车对应一个品牌
这种关系我们称之为关系

颜色

模型color与父模型vehicle存在多对多关系一辆车可以有多个颜色,一个颜色也可以设置在多辆车中
这种关系我们称之为关系

额外迁移

对于多对多关系,我们需要一个迁移来创建包含colorvehicle模型外键的表php artisan make:migration create_color_vehicle_table

你可以在示例目录中找到所有迁移文件

运行迁移

模型

因此,你的父模型vehicle应该看起来像这样

class Vehicle extends Model
{
    // ... 
    protected $fillable = ['code'];

    // one-to-one brand
    public function brand(): BelongsTo
    {
        return $this->belongsTo(Brand::class);
    }

    // many-to-many colors
    public function colors(): BelongsToMany // Dont forget import this class
    {
        return $this->belongsToMany(Color::class);
    }
}

你的单关系品牌应该看起来像这样

class Brand extends Model
{
    // ...
    protected $fillable = ['name'];

    // one-to-many vehicles 
    public function vehicles(): HasMany // Dont forget import this class
    {
        return $this->hasMany(Vehicle::class);
    }
}

你的多关系颜色应该看起来像这样

class Color extends Model
{
    // ...
    protected $fillable = ['name'];

    // One color has many vehicle
    public function vehicles(): BelongsToMany // Dont forget import this class
    {
        return $this->belongsToMany(Vehicle::class);
    }
}

路由和控制器

接下来,我们需要一个路由和一个控制器

  • 控制器:php artisan make:controller VehiclesController -i
  • 路由:Route::get('/vehicle', VehiclesController::class)->name('vehicles')

所需命令

我们运行了两个命令

  • php artisan select2:single brand -p vehicle
  • php artisan select2:multiple color -p vehicle

然后我们确保接受特质的创建。然后我们将创建的组件添加到控制器视图中使用。你可以看到示例及其结构。

祝您享受

💖 支持开发

你喜欢这个项目吗?通过捐赠来支持它

Select2-Wire是开源软件,许可协议为MIT许可