norman-huth/nova-single-resource
Composer 安装命令:
composer require norman-huth/nova-single-resource
包简介
Laravel Nova resource and fields for single record resources
README 文档
README
Create resources for "single" resources (key-value database structure), such as a settings table.
Install
composer require norman-huth/nova-single-resource
Usage
The following description refers to the Model Settings as an example....
You can create a resource with php artisan nova:single-resource Setting.
The table still requires a primary ID and this package is designed to allow the Value column to be nullable.
use NormanHuth\SingleResource\Traits\ResourceTrait; class Setting extends Resource { use ResourceTrait; // required public function __construct($resource = null) { $this->bootResourceTrait(); // Required parent::__construct($resource); } protected static function sections(): array { return [ 'general-settings' => [ 'name' => __('General Settings'), 'icon' => 'eye', ], 'system' => [ 'name' => __('System'), 'faIcon' => 'fa-brands fa-laravel fa-fw', ], ]; } /** * The model the resource corresponds to. * * @var string */ public static string $model = \App\Models\Setting::class; public function getGeneralSettingsFields(NovaRequest $request): array { return [ Currency::make('Price')->currency('EUR'), Text::make(__('Text'), 'text'), Boolean::make(__('Boolean'), 'boolean'), ]; } public function getSystemFields(NovaRequest $request): array { return [ Date::make(__('Date'), 'Date'), DateTime::make(__('DateTime'), 'DateTime'), ]; } }
Define the sections in sections()
'general-settings' => // Required: unique slug [ 'name' => 'My Settings' // Required: Display section name 'icon' => 'eye', // Optional: Heroicon icon https://heroicons.com/ 'faIcon' => 'fa-brands fa-laravel fa-fw', // Optional: FontAwesome Icon (not included!) https://fontawesome.com/ ],
And add for every section fields.
Format: get'.Str::studly($slug).'Fields: getGeneralSettingsFields(NovaRequest $request)
Columns
By default, the columns key and value are used in the database.
If you want to use others. You must specify them in the model:
class Setting extends Model { public static string $keyColumn = 'key'; public static string $valueColumn = 'value';
Change cast of a field
Text::make(__('SMTP Password'), 'smtp_password') ->cast('encrypted'),
Single Resource Fields
In this resource must be used adjusted fields.
The following fields are already included:
Nova
| Original | Single Resource |
|---|---|
| Boolean | NormanHuth\SingleResource\Fields\Boolean |
| BooleanGroup | NormanHuth\SingleResource\Fields\BooleanGroup |
| Color | NormanHuth\SingleResource\Fields\Color |
| Country | NormanHuth\SingleResource\Fields\Country |
| Currency | NormanHuth\SingleResource\Fields\Currency |
| Date | NormanHuth\SingleResource\Fields\Date |
| DateTime | NormanHuth\SingleResource\Fields\DateTime |
| KeyValue | NormanHuth\SingleResource\Fields\KeyValue |
| Markdown | NormanHuth\SingleResource\Fields\Markdown |
| MultiSelect | NormanHuth\SingleResource\Fields\MultiSelect |
| Number | NormanHuth\SingleResource\Fields\Number |
| Select | NormanHuth\SingleResource\Fields\Select |
| Text | NormanHuth\SingleResource\Fields\Text |
| Textarea | NormanHuth\SingleResource\Fields\Textarea |
| Timezone | NormanHuth\SingleResource\Fields\Timezone |
| Trix | NormanHuth\SingleResource\Fields\Trix |
File Fields
| Original | Single Resource |
|---|---|
| File | NormanHuth\SingleResource\Fields\File |
| Image | NormanHuth\SingleResource\Fields\Image |
| Avatar | NormanHuth\SingleResource\Fields\Avatar |
Package Fields (alphabetic)
| Package | Single Resource |
|---|---|
| flatroy/nova-progressbar-field | NormanHuth\SingleResource\Fields\Flatroy\FieldProgressbar |
| murdercode/seo-title | NormanHuth\SingleResource\Fields\Murdercode\SeoTitle |
| murdercode/nova4-seo-description | NormanHuth\SingleResource\Fields\Murdercode\SeoDescription |
| murdercode/nova4-tinymce-editor | NormanHuth\SingleResource\Fields\Murdercode\TinymceEditor |
| norman-huth/nova-bbcode-textarea | NormanHuth\SingleResource\Fields\NormanHuth\BBCode NormanHuth\SingleResource\Fields\NormanHuth\BB |
| norman-huth/nova-iframe-popup | NormanHuth\SingleResource\Fields\NormanHuth\IframePopup |
| norman-huth/nova-secret-field | NormanHuth\SingleResource\Fields\NormanHuth\SecretField |
| norman-huth/nova-values-field | NormanHuth\SingleResource\Fields\NormanHuth\Values |
Field Development Notices
- Try this trait
- Cast with
protected string $cast. Example here. Seeprotected function castValuein the trait
Todos
- Custom
ResourceUpdateController&Updatecomponent to be able to use slugs in url - ebess/advanced-nova-media-library
- ???
norman-huth/nova-single-resource 适用场景与选型建议
norman-huth/nova-single-resource 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.7k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2022 年 04 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nova」 「laravel」 「laravel-nova」 「nova-4」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 norman-huth/nova-single-resource 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 norman-huth/nova-single-resource 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 norman-huth/nova-single-resource 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel Nova card that shows you your system information.
A Laravel Nova card.
A Laravel Nova package for publishable fields
A Laravel Nova package for translatable fields
Laravel Nova package providing global floating scroll-to-top and scroll-to-bottom buttons for faster navigation.
A Laravel Nova tool for creating responsive tables.
统计信息
- 总下载量: 12.7k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-04-29

