PHP code example of rsubr / nova-json-schema-field

1. Go to this page and download the library: Download rsubr/nova-json-schema-field library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

rsubr / nova-json-schema-field example snippets


    use Illuminate\Database\Eloquent\Casts\AsCollection;

    protected $casts = [
        'details' => AsCollection::class,
    ];

    // NovaJsonSchemaField does not like empty JSON, so use an empty placeholder
    protected $attributes = [
        'details' => '{"_": ""}',
    ];

use Rsubr\NovaJsonSchemaField\NovaJsonSchemaField;

public function fields(Request $request)
{
    return [
        // ...
        NovaJsonSchemaField::make('Details')
            ->jsonSchema($this->loadSchema())
            ->rules('json'),
    ];
}

private function loadSchema(): array
{
    $schema = <<<SCHEMA
        {
            "type": "object",
            "     "enum": [
                            "State Level",
                            "National",
                            "International"
                        ]
                    },
                    "description": "Event level"
                },
                "start_date": {
                    "type": "string",
                    "format": "date",
                    "description": "Start Date"
                },
                "duration": {
                    "type": "number",
                    "description": "Duration in Days"
                }
            }
        }

    SCHEMA;
    return json_encode($schema, true);
}

    public function getJsonSchemaAttribute() {
        return $this->event_type->json_schema;
    }

    protected function loadSchema($request)
    {
        // NovaJsonSchemaField does not like empty JSON, so use an empty placeholder
        $schema = $request->findModelQuery()->first()->json_schema ?? array();

        return $schema;
    }