digital-creative/nova-json-wrapper
最新稳定版本:v0.2.0
Composer 安装命令:
composer require digital-creative/nova-json-wrapper
包简介
Allows you to group Nova fields and merge their output into a single JSON column.
README 文档
README
This field allows you to group Nova fields and merge their output into a single JSON column.
Installation
You can install the package via composer:
composer require digital-creative/nova-json-wrapper
Usage
Firstly you will need to update your model to cast the value of your attribute to an array:
class User extends Model { protected $casts = [ 'options' => 'array' ]; }
Then create a JsonWrapper field within your nova resource and use the HasJsonWrapper trait.
use DigitalCreative\JsonWrapper\JsonWrapper; use DigitalCreative\JsonWrapper\HasJsonWrapper; class User extends Resource { use HasJsonWrapper; // Important! public function fields(Request $request) { //... JsonWrapper::make('options', [ Text::make('First Name')->rules('required'), Text::make('Last Name')->rules('required'), JsonWrapper::make('body_mass', [ Text::make('Weight')->rules('required'), Text::make('Height')->rules('required'), ]) ]) } }
This converts to
{ "first_name": "John", "last_name": "Doe", "body_mass": { "weight": 70, "height": 180 } }
and saves to the options column on the database.
Notes
There are no visual indications that the field is wrapped within a json, this is intentional. It was designed to work in condition with Conditional Container allowing to seamlessly create complex data structure and having it all saved in a single json column into your database, here is an full example:
public function fields(Request $request) { Select::make('Type') ->options([ 1, 2, 3, 4, 5 ]) ->rules('required'), ConditionalContainer::make([ JsonWrapper::make('data', [ Text::make('First Name')->rules('required'), Text::make('Last Name')->rules('required'), Select::make('Gender') ->options([ 'male' => 'Male', 'female' => 'Female' ]) ->rules('required'), ConditionalContainer::make([ JsonWrapper::make('extra', [ ... ]) ])->if('gender === male'), ConditionalContainer::make([ JsonWrapper::make('extra', [ ... ]) ])->if('gender === female'), ]) ])->if('type >= 2'), }
License
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 79.55k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-10-15