diff --git a/src/CrudMake.php b/src/CrudMake.php index 652b640..d8da5d7 100644 --- a/src/CrudMake.php +++ b/src/CrudMake.php @@ -4,9 +4,19 @@ namespace Luthfi\CrudGenerator; use Illuminate\Support\Str; use Illuminate\Console\Command; +use Illuminate\Filesystem\Filesystem; class CrudMake extends Command { + private $files; + + public function __construct(Filesystem $files) + { + parent::__construct(); + + $this->files = $files; + } + /** * The name and signature of the console command. * @@ -30,13 +40,26 @@ class CrudMake extends Command { $model = $this->argument('name'); $pluralModel = str_plural($model); + $lowerCasePluralModel = strtolower($pluralModel); + $this->callSilent('make:model', ['name' => $model]); $this->info($model.' model generated.'); $this->callSilent('make:controller', ['name' => $pluralModel.'Controller']); $this->info($pluralModel.'Controller generated.'); + + $path = resource_path('views/'.$lowerCasePluralModel); + if (! $this->files->isDirectory($path)) { + $this->files->makeDirectory($path, 0777, true, true); + } + + $this->files->put($path.'/index.blade.php', $this->files->get(__DIR__.'/stubs/view-index.stub')); + $this->files->put($path.'/forms.blade.php', $this->files->get(__DIR__.'/stubs/view-forms.stub')); + $this->callSilent('make:test', ['name' => 'Manage'.$pluralModel.'Test']); + $this->info('Manage'.$pluralModel.'Test generated.'); $this->callSilent('make:test', ['name' => 'Models/'.$model.'Test', '--unit' => true]); + $this->info($model.'Test (model) generated.'); $this->info('CRUD files generated successfully!'); } diff --git a/src/stubs/view-forms.stub b/src/stubs/view-forms.stub new file mode 100644 index 0000000..6e03d78 --- /dev/null +++ b/src/stubs/view-forms.stub @@ -0,0 +1,33 @@ +@if (Request::get('action') == 'create') + {!! Form::open(['route' => 'masters.store']) !!} + {!! FormField::text('name') !!} + {!! FormField::textarea('description') !!} + {!! Form::submit(trans('master.create'), ['class' => 'btn btn-success']) !!} + {!! Form::hidden('cat', 'master') !!} + {{ link_to_route('masters.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }} + {!! Form::close() !!} +@endif +@if (Request::get('action') == 'edit' && $editableMaster) + {!! Form::model($editableMaster, ['route' => ['masters.update', $editableMaster->id],'method' => 'patch']) !!} + {!! FormField::text('name') !!} + {!! FormField::textarea('description') !!} + {!! Form::submit(trans('master.update'), ['class' => 'btn btn-success']) !!} + {{ link_to_route('masters.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }} + {!! Form::close() !!} +@endif +@if (Request::get('action') == 'delete' && $editableMaster) +
+

{{ trans('master.delete') }}

+
+ +

{{ $editableMaster->name }}

+ {!! $errors->first('master_id', ':message') !!} +
+
+
{{ trans('app.delete_confirm') }}
+ +
+@endif \ No newline at end of file diff --git a/src/stubs/view-index.stub b/src/stubs/view-index.stub new file mode 100644 index 0000000..703296b --- /dev/null +++ b/src/stubs/view-index.stub @@ -0,0 +1,40 @@ +@extends('layouts.app') + +@section('title', trans('master.list')) + +@section('content') +{{ link_to_route('masters.index', trans('master.create'), ['action' => 'create'], ['class' => 'btn btn-success pull-right']) }} + +
+
+
+ + + + + + + + + + + @foreach($masters as $key => $master) + + + + + + + @endforeach + +
{{ trans('app.table_no') }}{{ trans('master.name') }}{{ trans('master.description') }}{{ trans('app.action') }}
{{ 1 + $key }}{{ $master->name }}{{ $master->description }} + {!! link_to_route('masters.index', trans('app.edit'), ['action' => 'edit', 'id' => $master->id], ['id' => 'edit-master-' . $master->id]) !!} | + {!! link_to_route('masters.index', trans('app.delete'), ['action' => 'delete', 'id' => $master->id], ['id' => 'del-master-' . $master->id]) !!} +
+
+
+
+ @includeWhen(Request::has('action'), 'masters.forms') +
+
+@endsection \ No newline at end of file diff --git a/tests/CrudMakeCommandTest.php b/tests/CrudMakeCommandTest.php index feea459..ac355a8 100644 --- a/tests/CrudMakeCommandTest.php +++ b/tests/CrudMakeCommandTest.php @@ -16,14 +16,14 @@ class CrudMakeCommandTest extends TestCase $this->assertFileExists(app_path('Test.php')); $this->assertFileExists(app_path('Http/Controllers/TestsController.php')); - // $this->assertFileExists(resource_path('views/tests/index.blade.php')); - // $this->assertFileExists(resource_path('views/tests/forms.blade.php')); + $this->assertFileExists(resource_path('views/tests/index.blade.php')); + $this->assertFileExists(resource_path('views/tests/forms.blade.php')); $this->assertFileExists(base_path('tests/Feature/ManageTestsTest.php')); $this->assertFileExists(base_path('tests/Unit/Models/TestTest.php')); exec('rm '.app_path('Test.php')); exec('rm -r '.app_path('Http')); - // exec('rm -r '.resource_path('views/tests')); + exec('rm -r '.resource_path('views/tests')); exec('rm -r '.base_path('tests/Feature')); exec('rm -r '.base_path('tests/Unit')); }