everestmx / nova-belongs-to-many-field
字段中属于多对多的nova表示。
此包的规范存储库似乎已丢失,因此已冻结此包。
0.0.5
2019-09-25 19:21 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-06-29 04:40:26 UTC
README
多对多字段Nova
在字段中表示多对多关系的多对多字段。此字段允许轻松附加关系,你可以将查询传递给多重选择。
安装
composer require everestmx/nova-belongs-to-many-field
弃用
relationModel() 方法不再需要,为了避免冲突,它将保留在那里。并且 HasBelongsToMany 特性也不再需要,两者都将保留在存储库中,但不起作用。
使用方法
在资源中你需要传递
- make (标签,多对多关系,Nova 资源关系) 方法
- options (在这里你传递需要渲染在多重选择中的选项,你可以传递查询,使用 get() 方法来实现这一点)
- 你不需要传递 onlyOnForms(),这是默认的。
use Everestmx\BelongsToManyField\BelongsToManyField; public function fields(Request $request){ BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role') ->options(\App\Role::all()), }
可选
- optionsLabel('columnName') 方法,当你表中没有 'name' 列且你希望用另一个列名标记时使用此方法。默认情况下它跟踪 'name' 标签
use Everestmx\BelongsToManyField\BelongsToManyField; public function fields(Request $request){ BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role') ->options(\App\Role::all()) ->optionsLabel('title'), }
- isAction() 方法,当你需要在动作中使用此字段时使用此方法,这将字段的高度设置为 350px,并将其转换为动作。
use Everestmx\BelongsToManyField\BelongsToManyField; public function fields(Request $request){ BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role') ->options(\App\Role::all()) ->isAction(), }
为了获得在动作中发送的数据,请这样做
public function handle(ActionFields $fields, Collection $models) { // Get the expenseTypes from the request because the Field BelongsToManyField does not send it $values = array_column(json_decode(request()->roles, true),'id'); foreach ($models as $model) { $model->roles()->sync($values); } }
验证
此包实现了所有 Laravel 验证,你需要在 rules 方法中传递规则,规则列在 Laravel 验证规则数组*中。
use Everestmx\BelongsToManyField\BelongsToManyField; public function fields(Request $request){ BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role') ->options(\App\Role::all()) ->relationModel(\App\User::class) ->rules('required', 'min:1', 'max:5', 'size:3' new CustomRule), }
对于这些验证的翻译,使用正常的 Laravel 验证翻译。