martinjuul / many-to-many
Laravel Nova 字段。
该软件包的官方仓库似乎已消失,因此软件包已被冻结。
1.0.1
2020-12-07 16:48 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- laravel/nova: ~3.0
README
用于多态和非多态 ManyToMany
关系的 Laravel Nova 字段。
目录
功能
- 在创建和更新页面中附加多态和非多态
ManyToMany
关系 - 在附加关系时编辑枢纽列
- 多次将源附加到另一个资源
安装
composer require martinjuul/many-to-many
简单用法
use Juul\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->pivots(),
];
}
枢纽
要在附加资源时自定义枢纽列,可以使用字段的 pivots
方法。然后使用 fields
方法定义您的自定义枢纽字段。现在,在附加资源时,将显示包含枢纽字段的模态窗口。
use Juul\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->pivots(),
];
}
重复附件
您可以使用 duplicate
功能重复将资源附加到另一个资源。请按照以下示例操作
use Juul\Fields\BelongsToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
BelongsToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate(),
];
}
多态关系
对于多态关系的使用与非多态关系类似。请按照以下示例操作
use Juul\Fields\MorphToMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
MorphToMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate()
->pivots(),
];
}
或
use Juul\Fields\MorphedByMany;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
MorphedByMany::make(__("Label"), 'relationName', RelatedResource::class)
->fields(function() {
return [
Text::make('Price')
->rules('required', 'numeric'),
];
})
->duplicate()
->pivots(),
];
}
使用填充
您可以使用 fillUsing
来更改枢纽列的值;然后您需要返回一个与您的枢纽表匹配的关联数组。请注意;“fillUsing”方法适用于每个附件。请参阅以下示例
->fillUsing(function($pivots) {
if(isset($pivots['options']) && is_array($pivots['options'])) {
$pivots['options'] = json_encode($pivots['options']);
}
return $pivots;
}),