think.studio/nova-page-settings
Composer 安装命令:
composer require think.studio/nova-page-settings
包简介
Ad hoc solution to add settings configuration to laravel nova
README 文档
README
Ad hoc solution to add settings configuration to laravel nova.
| Nova | Package |
|---|---|
| V1 | V1, V2 |
| V4 | V3, V4 |
Installation
You can install the package via composer:
composer require think.studio/nova-page-settings
Optional publish configs
php artisan vendor:publish --provider="ThinkOne\NovaPageSettings\ServiceProvider" --tag="config"
Usage
Admin part
- Create settings table (migration)
public function up() { Schema::create( config('nova-page-settings.default.settings_table'), function ( Blueprint $table ) { \Thinkone\NovaPageSettings\MigrationHelper::defaultColumns($table); } ); }
- Create resource
namespace App\Nova\Resources; class PageSettingResource extends Resource { use \Thinkone\NovaPageSettings\Nova\Resources\Traits\AsPageSetting; public static $model = \Thinkone\NovaPageSettings\Adapters\CMSPageSettingModel::class; public static $searchable = false; public static $globallySearchable = false; public static $title = \Thinkone\NovaPageSettings\QueryAdapter\InternalSettingsModel::ATTR_NAME; public static $perPageOptions = [ 1000 ]; public static function label() { return 'Custom settings'; } public static function uriKey() { return 'custom-page-settings'; } }
- Create templates in folder what you specified in step 3. System will find all templates in folder automatically.
namespace App\Nova\PageSettings\Templates; use Laravel\Nova\Fields\Image; use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Textarea; use Laravel\Nova\Http\Requests\NovaRequest; use Thinkone\NovaPageSettings\Templates\BaseTemplate; use NovaFlexibleContent\Flexible; class MarketingPageSettings extends BaseTemplate { public function fields(NovaRequest $request) { return [ // NOTICE: do not forget use "templateKey" method Email::make('Notification email', $this->templateKey('notification_email')); Flexible::make('Slider', $this->templateKey('slider')) ->addLayout('Custom Slide', 'custom_slide', [ Text::make('Title', 'title'), Textarea::make('Text', 'text'), Text::make('Button Text', 'btn_text'), Text::make('Button Link', 'btn_link'), ]) ->limit(4) ->button('Add Slide'), // ... other fields ]; } }
- As a result, you should see something like this:
Frontend part
/** @var \Illuminate\Support\PageSettingsCollection $pageSettings */ $pageSettings = MarketingPageSettings::retrieve(); // get array of slides using helper $slides = $pageSettings->getSettingValue( 'slider', 'array', []); // get typed value $slides = $pageSettings->arraySettingValue( 'slider', []); $slides = $pageSettings->stringSettingValue( 'notification_email'); // or /** @var array $viewData */ $viewData = MarketingPageSettings::viewData(); echo $viewData['slider'];
Use flexible
If you need to use flexible content package you will need override default model:
namespace App\Models; class PageSetting extends \Thinkone\NovaPageSettings\Model\PageSetting { use \NovaFlexibleContent\Concerns\HasFlexible; public function valueFlexible(array $layoutMapping = []): \NovaFlexibleContent\Layouts\LayoutsCollection { return $this->flexible('value', $layoutMapping); } }
Credits
think.studio/nova-page-settings 适用场景与选型建议
think.studio/nova-page-settings 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 62 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 08 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nova」 「Settings」 「laravel-nova」 「settings-page」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 think.studio/nova-page-settings 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 think.studio/nova-page-settings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 think.studio/nova-page-settings 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel Nova card that shows you your system information.
Persistent settings package for Laravel framework.
A Laravel Nova card.
Laravel Nova resource and fields for single record resources
A Zend Framework module to quickly and easily set PHP settings.
A Laravel Nova package for publishable fields
统计信息
- 总下载量: 62
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-08-28
