📣 Shoutout to Jason McCreary whose Blueprint package lays the groundwork for this small addon. Thank you Jason 🙌
Installing this addon will allow you to generate your Nova resources with the php artisan blueprint:build
command.
You can install this package and Blueprint via composer:
composer require --dev naoray/blueprint-nova-addon
⚠️ You need to have laravel nova installed in order for the resource generation to take place!
Refer to Blueprint's Basic Usage to get started. Afterwards you can run the blueprint:build
command to generate Nova resources automatically. To get an idea of how easy it is you can use the example draft.yaml
file below.
# draft.yaml
models:
Post:
author_id: id foreign:users
title: string:400
content: longtext
published_at: nullable timestamp
relationships:
HasMany: Comment
Comment:
post_id: id foreign
content: longtext
published_at: nullable timestamp
From these 13 lines of YAML, this addon will generate 2 Nova resources which are pre-filled with 14 fields.
// App/Nova/Comment.php
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Textarea::make('Content')
->rules('required', 'string'),
DateTime::make('Published at'),
BelongsTo::make('Post'),
DateTime::make('Created at'),
DateTime::make('Updated at'),
];
}
// App/Nova/Post.php
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Title')
->rules('required', 'string', 'max:400'),
Textarea::make('Content')
->rules('required', 'string'),
DateTime::make('Published at'),
BelongsTo::make('Author', 'author', User::class),
HasMany::make('Comments'),
DateTime::make('Created at'),
DateTime::make('Updated at'),
];
}
You may publish the configuration with the following command:
php artisan vendor:publish --tag=blueprint-nova-config
To disable the generation of timestamp
fields for all Nova resources set this option to false
.
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.