add nova wizard
This commit is contained in:
@@ -190,7 +190,7 @@ class LoanOrder extends Resource
|
|||||||
// $table->text('passport_two');
|
// $table->text('passport_two');
|
||||||
// $table->text('passport_three');
|
// $table->text('passport_three');
|
||||||
// $table->text('passport_four');
|
// $table->text('passport_four');
|
||||||
|
|
||||||
// $table->foreignId('filled_by')->constrained('users')->restrictOnDelete();
|
// $table->foreignId('filled_by')->constrained('users')->restrictOnDelete();
|
||||||
// $table->foreignId('user_id')->constrained('users')->restrictOnDelete();
|
// $table->foreignId('user_id')->constrained('users')->restrictOnDelete();
|
||||||
// $table->string('status')->index();
|
// $table->string('status')->index();
|
||||||
|
|||||||
90
app/Nova/Wizards/AddUserWizard.php
Normal file
90
app/Nova/Wizards/AddUserWizard.php
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Nova\Wizards;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Laravel\Nova\Fields\Number;
|
||||||
|
use Laravel\Nova\Fields\Text;
|
||||||
|
use Laravel\Nova\Fields\Textarea;
|
||||||
|
use Wdelfuego\NovaWizard\AbstractWizard;
|
||||||
|
|
||||||
|
class AddUserWizard extends AbstractWizard
|
||||||
|
{
|
||||||
|
public function wizardViewData(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'steps' => [
|
||||||
|
[
|
||||||
|
'title' => 'Step 1/2',
|
||||||
|
'fields' => [
|
||||||
|
Text::make(__('Username'), 'username'),
|
||||||
|
Text::make(__('Text field'), 'myText'),
|
||||||
|
Textarea::make(__('Longer text'), 'myLongerText')
|
||||||
|
->help("You can use Help texts on Nova fields like you're used to"),
|
||||||
|
Number::make(__('Some number'), 'myNumber')
|
||||||
|
->rules('required')
|
||||||
|
->withMeta(['value' => 60])
|
||||||
|
->min(1)
|
||||||
|
->step(1),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'Step 2/2',
|
||||||
|
'fields' => [
|
||||||
|
Text::make(__('Text field 2'), 'myText2'),
|
||||||
|
Textarea::make(__('Longer text 2'), 'myLongerText2')
|
||||||
|
->help("You can use Help texts on Nova fields like you're used to"),
|
||||||
|
Number::make(__('Some number 2'), 'myNumber2')
|
||||||
|
->rules('required')
|
||||||
|
->withMeta(['value' => 60])
|
||||||
|
->min(1)
|
||||||
|
->step(1),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'Step 2/2',
|
||||||
|
'fields' => [
|
||||||
|
Text::make(__('Text field 2'), 'myText2'),
|
||||||
|
Textarea::make(__('Longer text 2'), 'myLongerText2')
|
||||||
|
->help("You can use Help texts on Nova fields like you're used to"),
|
||||||
|
Number::make(__('Some number 2'), 'myNumber2')
|
||||||
|
->rules('required')
|
||||||
|
->withMeta(['value' => 60])
|
||||||
|
->min(1)
|
||||||
|
->step(1),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onSubmit($formData, &$context): bool
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// When this method gets called, a valid and complete wizard was submitted.
|
||||||
|
//
|
||||||
|
// $formData is an array that contains the data submitted by the user.
|
||||||
|
//
|
||||||
|
// $context is an empty array that you can store arbitrary info in;
|
||||||
|
// it will be passed to the next method so you can use it
|
||||||
|
// to display specific context info to the user on success.
|
||||||
|
|
||||||
|
// Parse submitted wizard data somehow
|
||||||
|
$user = User::create(['name' => $formData['username']]);
|
||||||
|
$context['newUserId'] = $user->id;
|
||||||
|
|
||||||
|
// Return true at the end of this method to indicate success
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Or return false if the data can not be parsed successfully;
|
||||||
|
// the user will then stay in the form view and have a chance
|
||||||
|
// to revise the data before resubmitting.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function successViewData($context): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'message' => 'Successfully created user with id: '.$context['newUserId'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ use Laravel\Nova\Menu\MenuItem;
|
|||||||
use Laravel\Nova\Menu\MenuSection;
|
use Laravel\Nova\Menu\MenuSection;
|
||||||
use Laravel\Nova\Nova;
|
use Laravel\Nova\Nova;
|
||||||
use Laravel\Nova\NovaApplicationServiceProvider;
|
use Laravel\Nova\NovaApplicationServiceProvider;
|
||||||
|
use Wdelfuego\NovaWizard\NovaWizard;
|
||||||
|
|
||||||
class NovaServiceProvider extends NovaApplicationServiceProvider
|
class NovaServiceProvider extends NovaApplicationServiceProvider
|
||||||
{
|
{
|
||||||
@@ -83,6 +84,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
|
|||||||
LocaleSwitcher::make()
|
LocaleSwitcher::make()
|
||||||
->setLocales(config('app.locales'))
|
->setLocales(config('app.locales'))
|
||||||
->onSwitchLocale(NovaRepo::localeSwitcherSave()),
|
->onSwitchLocale(NovaRepo::localeSwitcherSave()),
|
||||||
|
// new NovaWizard('add-user'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +107,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
|
|||||||
|
|
||||||
MenuSection::make(__('Orders'), [
|
MenuSection::make(__('Orders'), [
|
||||||
MenuItem::resource(LoanOrder::class),
|
MenuItem::resource(LoanOrder::class),
|
||||||
|
// MenuItem::link('Add a user', NovaWizard::pathToWizard('add-user'))
|
||||||
])->icon('collection')->collapsable(),
|
])->icon('collection')->collapsable(),
|
||||||
|
|
||||||
MenuSection::make(__('System'), [
|
MenuSection::make(__('System'), [
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
"outl1ne/nova-translatable": "^2.2",
|
"outl1ne/nova-translatable": "^2.2",
|
||||||
"spatie/laravel-permission": "^6.1",
|
"spatie/laravel-permission": "^6.1",
|
||||||
"spatie/laravel-translatable": "^6.5",
|
"spatie/laravel-translatable": "^6.5",
|
||||||
"trin4ik/nova-switcher": "^0.4.0"
|
"trin4ik/nova-switcher": "^0.4.0",
|
||||||
|
"wdelfuego/nova-wizard": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
|
|||||||
53
composer.lock
generated
53
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "77a24bc6798fc44d2104306518b27e22",
|
"content-hash": "e54517769c07296164429fd898ff3555",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@@ -7071,6 +7071,57 @@
|
|||||||
],
|
],
|
||||||
"time": "2022-03-08T17:03:00+00:00"
|
"time": "2022-03-08T17:03:00+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "wdelfuego/nova-wizard",
|
||||||
|
"version": "v1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/wdelfuego/nova-wizard.git",
|
||||||
|
"reference": "4e8879415a417f10554a69e3214acd2fb8599c1f"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/wdelfuego/nova-wizard/zipball/4e8879415a417f10554a69e3214acd2fb8599c1f",
|
||||||
|
"reference": "4e8879415a417f10554a69e3214acd2fb8599c1f",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"laravel/nova": "^4.0",
|
||||||
|
"php": "^7.3|^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Wdelfuego\\NovaWizard\\ToolServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Wdelfuego\\NovaWizard\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"AGPL-3.0-or-later",
|
||||||
|
"proprietary"
|
||||||
|
],
|
||||||
|
"description": "A tool to create wizards in Nova 4.",
|
||||||
|
"keywords": [
|
||||||
|
"form",
|
||||||
|
"laravel",
|
||||||
|
"multi step",
|
||||||
|
"multistep",
|
||||||
|
"nova",
|
||||||
|
"wizard"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/wdelfuego/nova-wizard/issues",
|
||||||
|
"source": "https://github.com/wdelfuego/nova-wizard/tree/v1.0.1"
|
||||||
|
},
|
||||||
|
"time": "2023-10-17T13:18:08+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
"version": "1.11.0",
|
"version": "1.11.0",
|
||||||
|
|||||||
46
config/nova-wizard.php
Normal file
46
config/nova-wizard.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Nova\Wizards\AddUserWizard;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* © Copyright 2023 · Willem Vervuurt, Studio Delfuego
|
||||||
|
*
|
||||||
|
* You can modify, use and distribute this package under one of two licenses:
|
||||||
|
* 1. GNU AGPLv3
|
||||||
|
* 2. A perpetual, non-revocable and 100% free (as in beer) do-what-you-want
|
||||||
|
* license that allows both non-commercial and commercial use, under conditions.
|
||||||
|
* See LICENSE.md for details.
|
||||||
|
*
|
||||||
|
* (it boils down to: do what you want as long as you're building and/or
|
||||||
|
* using wizards, but don't embed this package or a modified version
|
||||||
|
* of it in free or paid-for software libraries and packages aimed at developers).
|
||||||
|
*/
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
'add-user' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The class of the Nova Wizard.
|
||||||
|
Don't forget to add the proper use statement above.
|
||||||
|
This key is required.
|
||||||
|
*/
|
||||||
|
'class' => AddUserWizard::class,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* URI for this wizard (will be appended to the Nova path, /nova by default)
|
||||||
|
This key is required.
|
||||||
|
*/
|
||||||
|
'uri' => 'wizard/add-user',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Browser window/tab title for this Nova Wizard.
|
||||||
|
This key is optional.
|
||||||
|
If you remove it or set it to an empty string, the dynamic title displayed above
|
||||||
|
the wizard view will be used as window/tab title in the browser.
|
||||||
|
*/
|
||||||
|
'windowTitle' => 'Add User',
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
||||||
Reference in New Issue
Block a user