承接 digital-creative/nova-json-wrapper 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

Latest Version on Packagist Total Downloads License

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

GitHub 信息

  • Stars: 13
  • Watchers: 2
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-10-15