crayon / nova-additional-fields
一个 Laravel Nova 扩展包,允许您动态地将输入添加到您的资源中。
1.0.0
2021-03-25 22:59 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-26 06:51:50 UTC
README
一个 Laravel Nova 扩展包,允许您根据数据库表动态地将输入添加到您的资源中。
安装
composer require crayon/nova-additional-fields
文档
假设您正在构建一个电子商务网站,并且您有不同类型的产品。如果您想让网站的管理员为每个产品输入自定义值,这将会很麻烦。
因此,此包允许您在 Nova 资源中定义表单输入;
迁移
产品字段(每个字段属于一个类别)
Schema::create('product_fields', function (Blueprint $table) { $table->id(); $table->json('text'); $table->string('type'); $table->string('name'); $table->text('options')->nullable(); $table->unsignedBigInteger('category_id'); $table->softDeletes(); $table->timestamps(); $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); });
资源使用
附加字段将从端点加载(属于我们选择的类别的字段)
AdditionalFields::make('Additional Fields', 'fields') ->parent('category') ->endpoint('/api/category/{category}/fields') ->hideFromIndex(),
端点
路由
Route::get('/category/{category}/fields', [\App\Http\Controllers\Api\NovaHelpers\NovaCategoryController::class, 'fields']);
控制器
/** * Get available fields by Category ID * * @param $category * @return mixed */ public function fields($category) { return Category::findOrFail($category)->fields->map(fn($field) => [ 'id' => $field->id, 'text' => $field->text, 'type' => $field->type, 'name' => $field->name, 'options' => $field->options ]); }
根据您添加到数据库中的字段,字段将被加载到您的资源中。ProductFields 资源请在此处找到 here
屏幕截图
结论
Laravel Nova 是一款非常棒的软件,在构建管理面板时将提高您的生产力。通过自定义包和字段进行一些定制后,您就准备好摇滚了。