norman-huth / nova-default-fields
每个资源的标准字段
dev-main
2022-12-24 17:33 UTC
This package is auto-updated.
Last update: 2024-09-24 21:32:30 UTC
README
每个资源的标准字段。
无需安装。
在Nova 4上测试过。
说明
将以下内容添加到Nova基本资源中(app/Nova/Resources/Resource.php
)
/** * Get the fields that are available for the given request. * * @param NovaRequest $request * @return FieldCollection */ public function availableFields(NovaRequest $request): FieldCollection { $method = $this->fieldsMethod($request); $fields = array_merge($this->{$method}($request), $this->defaultFields($request)); return FieldCollection::make(array_values($this->filter($fields))); } /** * Get the fields that are available for the given request. * * @param NovaRequest $request * @param array $methods * @return FieldCollection */ public function buildAvailableFields(NovaRequest $request, array $methods): FieldCollection { $fields = collect([ method_exists($this, 'fields') ? array_merge($this->fields($request), $this->defaultFields($request)) : [], ]); collect($methods) ->filter(function ($method) { return $method != 'fields' && method_exists($this, $method); })->each(function ($method) use ($request, $fields) { $fields->push([$this->{$method}($request)]); }); return FieldCollection::make(array_values($this->filter($fields->flatten()->all()))); } /** * Default fields for every resource * * @param NovaRequest $request * @return array */ protected function defaultFields(NovaRequest $request): array { return []; }
定义默认字段
您可以在defaultFields
方法中定义默认字段
示例 1
protected function defaultFields(NovaRequest $request): array { return [ DateTime::make(__('Created at'), 'created_at') ->sortable()->filterable()->exceptOnForms(), DateTime::make(__('Updated at'), 'updated_at') ->sortable()->filterable()->exceptOnForms(), ]; }
示例 2
使用选项$showCreatedAtField
、showCreatedAtField()
、$showUpdatedAtField
和showUpdatedAtField()
,并检查是否存在所需的列static::$model::CREATED_AT
和static::$model::UPDATED_AT
/** * Show in this resource the DateTime field `created_at` * * @var bool */ public bool $showCreatedAtField = true; public function showCreatedAtField(NovaRequest $request): bool { return $this->showCreatedAtField; } /** * Show in this resource the DateTime field `updated_at` * * @var bool */ public bool $showUpdatedAtField = true; public function showUpdatedAtField(NovaRequest $request): bool { return $this->showUpdatedAtField; } protected function defaultFields(NovaRequest $request): array { $fields = []; if ($this->showCreatedAtField($request) && static::$model::CREATED_AT) { $fields = array_merge($fields, [ DateTime::make(__('Created at'), 'created_at') ->sortable()->filterable()->exceptOnForms() ]); } if ($this->showUpdatedAtField($request) && static::$model::UPDATED_AT) { $fields = array_merge($fields, [ DateTime::make(__('Updated at'), 'updated_at') ->sortable()->filterable()->exceptOnForms() ]); } /* * For SoftDeletes * */ if ($request->input('trashed')) { $fields = array_merge($fields, [ DateTime::make(__('Deleted at'), 'deleted_at') ->sortable()->filterable()->exceptOnForms() ]); } /* * For spatie/laravel-activitylog * */ if (method_exists(static::$model, 'getLogName')) { $fields = array_merge($fields, [ MorphMany::make(__('Activities'), 'activities', Activity::class) ]); } return $fields; }