From a541cb6f2c51636517c8f95afc04bc31f28f5e17 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 3 Dec 2019 14:22:37 +0200 Subject: [PATCH 1/3] added Snippets CRUD --- .../Admin/SnippetCrudController.php | 102 ++++++++++++++++++ app/Http/Requests/SnippetRequest.php | 57 ++++++++++ app/Models/Snippet.php | 61 +++++++++++ app/Models/Traits/CreatedByTrait.php | 39 +++++++ ...019_12_03_115109_create_snippets_table.php | 37 +++++++ .../base/inc/sidebar_content.blade.php | 4 +- routes/backpack/custom.php | 3 +- 7 files changed, 301 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/Admin/SnippetCrudController.php create mode 100644 app/Http/Requests/SnippetRequest.php create mode 100644 app/Models/Snippet.php create mode 100644 app/Models/Traits/CreatedByTrait.php create mode 100644 database/migrations/2019_12_03_115109_create_snippets_table.php diff --git a/app/Http/Controllers/Admin/SnippetCrudController.php b/app/Http/Controllers/Admin/SnippetCrudController.php new file mode 100644 index 000000000..4230ea58e --- /dev/null +++ b/app/Http/Controllers/Admin/SnippetCrudController.php @@ -0,0 +1,102 @@ +crud->setModel('App\Models\Snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/snippet'); + $this->crud->setEntityNameStrings('snippet', 'snippets'); + } + + protected function setupListOperation() + { + $this->crud->addColumn('name'); + $this->crud->addColumn([ + 'label' => 'Category', + 'type' => 'select', + 'name' => 'category_id', + 'entity' => 'category', + 'attribute' => 'name', + ]); + $this->crud->addColumn([ + 'label' => 'Created by', + 'type' => 'select', + 'name' => 'created_by', + 'entity' => 'creator', + 'attribute' => 'name', + ]); + + $this->crud->addColumn([ + 'label' => 'Updated by', + 'type' => 'select', + 'name' => 'updated_by', + 'entity' => 'updater', + 'attribute' => 'name', + ]); + } + + protected function setupShowOperation() + { + $this->setupListOperation(); + + $this->crud->addColumn('description'); + $this->crud->addColumn('content'); + } + + protected function setupCreateOperation() + { + $this->crud->setValidation(SnippetRequest::class); + + $this->crud->addField([ + 'type' => 'text', + 'name' => 'name', + 'label' => 'Name', + 'wrapperAttributes' => [ + 'class' => 'form-group col-md-6' + ] + ]); + $this->crud->addField([ + 'label' => 'Category', + 'type' => 'select', + 'name' => 'category_id', + 'entity' => 'category', + 'attribute' => 'name', + 'wrapperAttributes' => [ + 'class' => 'form-group col-md-6' + ] + ]); + $this->crud->addField([ + 'type' => 'simplemde', + 'name' => 'description', + 'label' => 'Description' + ]); + $this->crud->addField([ + 'type' => 'textarea', + 'name' => 'content', + 'label' => 'Content' + ]); + } + + protected function setupUpdateOperation() + { + $this->setupCreateOperation(); + } +} diff --git a/app/Http/Requests/SnippetRequest.php b/app/Http/Requests/SnippetRequest.php new file mode 100644 index 000000000..273636471 --- /dev/null +++ b/app/Http/Requests/SnippetRequest.php @@ -0,0 +1,57 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'name' => 'required|min:5|max:255', + 'category_id' => 'required', + ]; + } + + /** + * Get the validation attributes that apply to the request. + * + * @return array + */ + public function attributes() + { + return [ + // + ]; + } + + /** + * Get the validation messages that apply to the request. + * + * @return array + */ + public function messages() + { + return [ + // + ]; + } +} diff --git a/app/Models/Snippet.php b/app/Models/Snippet.php new file mode 100644 index 000000000..40f60f12e --- /dev/null +++ b/app/Models/Snippet.php @@ -0,0 +1,61 @@ +belongsTo('Backpack\NewsCRUD\app\Models\Category', 'category_id'); + } + + /* + |-------------------------------------------------------------------------- + | SCOPES + |-------------------------------------------------------------------------- + */ + + /* + |-------------------------------------------------------------------------- + | ACCESSORS + |-------------------------------------------------------------------------- + */ + + /* + |-------------------------------------------------------------------------- + | MUTATORS + |-------------------------------------------------------------------------- + */ +} diff --git a/app/Models/Traits/CreatedByTrait.php b/app/Models/Traits/CreatedByTrait.php new file mode 100644 index 000000000..63522e559 --- /dev/null +++ b/app/Models/Traits/CreatedByTrait.php @@ -0,0 +1,39 @@ +check() ? backpack_auth()->user() : (\Auth::check() ? \Auth::user() : false ); + + if ($user) { + $this->created_by = $this->created_by ?? $user->id; + $this->updated_by = $user->id; + } + + parent::save(); + } + + /* + |-------------------------------------------------------------------------- + | RELATIONS + |-------------------------------------------------------------------------- + */ + + public function creator() + { + return $this->belongsTo('App\User', 'created_by'); + } + + public function updater() + { + return $this->belongsTo('App\User', 'updated_by'); + } +} \ No newline at end of file diff --git a/database/migrations/2019_12_03_115109_create_snippets_table.php b/database/migrations/2019_12_03_115109_create_snippets_table.php new file mode 100644 index 000000000..e3d76c92f --- /dev/null +++ b/database/migrations/2019_12_03_115109_create_snippets_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->string('name'); + $table->integer('category_id')->unsigned(); + $table->text('description')->nullable(); + $table->text('content')->nullable(); + $table->integer('created_by')->nullable()->unsigned(); + $table->integer('updated_by')->nullable()->unsigned(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('snippets'); + } +} diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index a09d901f3..14bb87fbb 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -36,4 +36,6 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 46866425a..7344fb1f7 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -36,4 +36,5 @@ }); } } -}); // this should be the absolute last line of this file + Route::crud('snippet', 'SnippetCrudController'); +}); // this should be the absolute last line of this file \ No newline at end of file From 16fc2fd7af4d3fe75a52e79448c9236a83bb5117 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 3 Dec 2019 16:24:17 +0200 Subject: [PATCH 2/3] added Creator CRUD and nested Creator Snippets CRUD --- .../Admin/CreatorCrudController.php | 38 +++++++++++++ .../Admin/CreatorSnippetCrudController.php | 33 +++++++++++ .../Admin/MySnippetCrudController.php | 38 +++++++++++++ app/Http/Requests/CreatorRequest.php | 56 +++++++++++++++++++ app/Models/Creator.php | 25 +++++++++ .../base/inc/sidebar_content.blade.php | 6 +- .../crud/columns/relationship_count.blade.php | 8 +++ routes/backpack/custom.php | 16 +++++- 8 files changed, 217 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/Admin/CreatorCrudController.php create mode 100644 app/Http/Controllers/Admin/CreatorSnippetCrudController.php create mode 100644 app/Http/Controllers/Admin/MySnippetCrudController.php create mode 100644 app/Http/Requests/CreatorRequest.php create mode 100644 app/Models/Creator.php create mode 100644 resources/views/vendor/backpack/crud/columns/relationship_count.blade.php diff --git a/app/Http/Controllers/Admin/CreatorCrudController.php b/app/Http/Controllers/Admin/CreatorCrudController.php new file mode 100644 index 000000000..954df5c43 --- /dev/null +++ b/app/Http/Controllers/Admin/CreatorCrudController.php @@ -0,0 +1,38 @@ +crud->setModel('App\Models\Creator'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/creator'); + $this->crud->setEntityNameStrings('creator', 'creators'); + } + + protected function setupListOperation() + { + $this->crud->addColumn('name'); + $this->crud->addColumn([ + 'type' => 'relationship_count', + 'name' => 'snippets', + 'label' => 'Snippets', + 'suffix' => ' snippets', + 'link' => function($entry) { + return backpack_url('creator/'.$entry->id.'/snippet'); + } + ]); + } +} diff --git a/app/Http/Controllers/Admin/CreatorSnippetCrudController.php b/app/Http/Controllers/Admin/CreatorSnippetCrudController.php new file mode 100644 index 000000000..67eb0745e --- /dev/null +++ b/app/Http/Controllers/Admin/CreatorSnippetCrudController.php @@ -0,0 +1,33 @@ +parameter('user_id'); + + $this->crud->setModel('App\Models\Snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/creator/'.$user_id.'/snippet'); + $this->crud->setEntityNameStrings('snippet', 'snippets'); + + // filter List operation (with search) to only show this users' entries + $this->crud->addClause('where', 'created_by', $user_id); + } +} diff --git a/app/Http/Controllers/Admin/MySnippetCrudController.php b/app/Http/Controllers/Admin/MySnippetCrudController.php new file mode 100644 index 000000000..bdd7da2c6 --- /dev/null +++ b/app/Http/Controllers/Admin/MySnippetCrudController.php @@ -0,0 +1,38 @@ +crud->setModel('App\Models\Snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/my-snippet'); + $this->crud->setEntityNameStrings('snippet', 'snippets'); + + // filter List operation (with search) to only show this users' entries + $this->crud->addClause('where', 'created_by', backpack_auth()->user()->id); + + // if the user tries to access somone else's entries, block him + $entry = $this->crud->getCurrentEntry(); + + if ($entry && $entry->created_by != backpack_auth()->user()->id) { + abort(403, "You don't have access to this entry."); + } + } +} diff --git a/app/Http/Requests/CreatorRequest.php b/app/Http/Requests/CreatorRequest.php new file mode 100644 index 000000000..2490d1719 --- /dev/null +++ b/app/Http/Requests/CreatorRequest.php @@ -0,0 +1,56 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // 'name' => 'required|min:5|max:255' + ]; + } + + /** + * Get the validation attributes that apply to the request. + * + * @return array + */ + public function attributes() + { + return [ + // + ]; + } + + /** + * Get the validation messages that apply to the request. + * + * @return array + */ + public function messages() + { + return [ + // + ]; + } +} diff --git a/app/Models/Creator.php b/app/Models/Creator.php new file mode 100644 index 000000000..e3f406cb3 --- /dev/null +++ b/app/Models/Creator.php @@ -0,0 +1,25 @@ +hasMany('App\Models\Snippet', 'created_by'); + } +} diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index 14bb87fbb..31dfdda1c 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -38,4 +38,8 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php b/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php new file mode 100644 index 000000000..9ac431d8c --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php @@ -0,0 +1,8 @@ +{{-- snippets column - used to show Nested CRUDs inside Backpack Demo --}} +@php + $value = $entry->{$column['name']}->count(); + $link = isset($column['link']) ? $column['link']($entry) : false; + $target = isset($column['target']) ? $column['target'] : false; +@endphp + +{{ (array_key_exists('prefix', $column) ? $column['prefix'] : '').str_limit(strip_tags($value), array_key_exists('limit', $column) ? $column['limit'] : 40, "[...]").(array_key_exists('suffix', $column) ? $column['suffix'] : '') }} \ No newline at end of file diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 7344fb1f7..97c5b86cc 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -20,13 +20,24 @@ Route::crud('icon', 'IconCrudController'); Route::crud('product', 'ProductCrudController'); + // --------------------- + // Backpack Nested CRUDs + // --------------------- + Route::crud('snippet', 'SnippetCrudController'); + Route::crud('my-snippet', 'MySnippetCrudController'); + + Route::crud('creator', 'CreatorCrudController'); + Route::group(['prefix' => 'creator/{user_id}'], function() { + Route::crud('snippet', 'CreatorSnippetCrudController'); + }); + // --------------------------- // Backpack DEMO Custom Routes // Prevent people from doing nasty stuff in the online demo // --------------------------- if (app('env') == 'production') { // disable delete and bulk delete for all CRUDs - $cruds = ['article', 'category', 'tag', 'monster', 'icon', 'product', 'page', 'menu-item', 'user', 'role', 'permission']; + $cruds = ['article', 'category', 'tag', 'monster', 'icon', 'product', 'page', 'menu-item', 'user', 'role', 'permission', 'snippet', 'my-snippet', 'creator', 'creator/{user_id}/snippet']; foreach ($cruds as $name) { Route::delete($name.'/{id}', function () { return false; @@ -36,5 +47,6 @@ }); } } - Route::crud('snippet', 'SnippetCrudController'); + + }); // this should be the absolute last line of this file \ No newline at end of file From e67fb24e691d502cec6c298684ef9d76e8719ff7 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 3 Dec 2019 14:24:37 +0000 Subject: [PATCH 3/3] Apply fixes from StyleCI --- .../Admin/CreatorCrudController.php | 17 +++-- .../Admin/CreatorSnippetCrudController.php | 8 +-- .../Admin/MonsterCrudController.php | 8 +-- .../Admin/MySnippetCrudController.php | 10 ++- .../Admin/SnippetCrudController.php | 68 +++++++++---------- app/Http/Requests/CreatorRequest.php | 1 - app/Http/Requests/SnippetRequest.php | 3 +- app/Models/Creator.php | 2 +- app/Models/Snippet.php | 2 +- app/Models/Traits/CreatedByTrait.php | 12 ++-- ...019_12_03_115109_create_snippets_table.php | 2 +- routes/backpack/custom.php | 6 +- 12 files changed, 64 insertions(+), 75 deletions(-) diff --git a/app/Http/Controllers/Admin/CreatorCrudController.php b/app/Http/Controllers/Admin/CreatorCrudController.php index 954df5c43..6fb0a6ce4 100644 --- a/app/Http/Controllers/Admin/CreatorCrudController.php +++ b/app/Http/Controllers/Admin/CreatorCrudController.php @@ -2,13 +2,12 @@ namespace App\Http\Controllers\Admin; -use App\Http\Requests\CreatorRequest; use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; /** - * Class CreatorCrudController - * @package App\Http\Controllers\Admin + * Class CreatorCrudController. + * * @property-read CrudPanel $crud */ class CreatorCrudController extends CrudController @@ -18,7 +17,7 @@ class CreatorCrudController extends CrudController public function setup() { $this->crud->setModel('App\Models\Creator'); - $this->crud->setRoute(config('backpack.base.route_prefix') . '/creator'); + $this->crud->setRoute(config('backpack.base.route_prefix').'/creator'); $this->crud->setEntityNameStrings('creator', 'creators'); } @@ -26,13 +25,13 @@ protected function setupListOperation() { $this->crud->addColumn('name'); $this->crud->addColumn([ - 'type' => 'relationship_count', - 'name' => 'snippets', - 'label' => 'Snippets', + 'type' => 'relationship_count', + 'name' => 'snippets', + 'label' => 'Snippets', 'suffix' => ' snippets', - 'link' => function($entry) { + 'link' => function ($entry) { return backpack_url('creator/'.$entry->id.'/snippet'); - } + }, ]); } } diff --git a/app/Http/Controllers/Admin/CreatorSnippetCrudController.php b/app/Http/Controllers/Admin/CreatorSnippetCrudController.php index 67eb0745e..e0d2e1b1a 100644 --- a/app/Http/Controllers/Admin/CreatorSnippetCrudController.php +++ b/app/Http/Controllers/Admin/CreatorSnippetCrudController.php @@ -2,13 +2,11 @@ namespace App\Http\Controllers\Admin; -use App\Http\Requests\SnippetRequest; -use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; /** - * Class SnippetCrudController - * @package App\Http\Controllers\Admin + * Class SnippetCrudController. + * * @property-read CrudPanel $crud */ class CreatorSnippetCrudController extends SnippetCrudController @@ -24,7 +22,7 @@ public function setup() $user_id = \Route::current()->parameter('user_id'); $this->crud->setModel('App\Models\Snippet'); - $this->crud->setRoute(config('backpack.base.route_prefix') . '/creator/'.$user_id.'/snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix').'/creator/'.$user_id.'/snippet'); $this->crud->setEntityNameStrings('snippet', 'snippets'); // filter List operation (with search) to only show this users' entries diff --git a/app/Http/Controllers/Admin/MonsterCrudController.php b/app/Http/Controllers/Admin/MonsterCrudController.php index 0a0f4187f..14c47f35c 100644 --- a/app/Http/Controllers/Admin/MonsterCrudController.php +++ b/app/Http/Controllers/Admin/MonsterCrudController.php @@ -568,10 +568,10 @@ protected function setupCreateOperation() ]); $this->crud->addField([ // Browse multiple - 'name' => 'browse_multiple', - 'label' => 'Browse multiple', - 'type' => 'browse_multiple', - 'tab' => 'Uploads', + 'name' => 'browse_multiple', + 'label' => 'Browse multiple', + 'type' => 'browse_multiple', + 'tab' => 'Uploads', 'sortable' => true, // 'multiple' => true, // enable/disable the multiple selection functionality // 'mime_types' => null, // visible mime prefixes; ex. ['image'] or ['application/pdf'] diff --git a/app/Http/Controllers/Admin/MySnippetCrudController.php b/app/Http/Controllers/Admin/MySnippetCrudController.php index bdd7da2c6..b9bc59b0b 100644 --- a/app/Http/Controllers/Admin/MySnippetCrudController.php +++ b/app/Http/Controllers/Admin/MySnippetCrudController.php @@ -2,13 +2,11 @@ namespace App\Http\Controllers\Admin; -use App\Http\Requests\SnippetRequest; -use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; /** - * Class SnippetCrudController - * @package App\Http\Controllers\Admin + * Class SnippetCrudController. + * * @property-read CrudPanel $crud */ class MySnippetCrudController extends SnippetCrudController @@ -22,7 +20,7 @@ class MySnippetCrudController extends SnippetCrudController public function setup() { $this->crud->setModel('App\Models\Snippet'); - $this->crud->setRoute(config('backpack.base.route_prefix') . '/my-snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix').'/my-snippet'); $this->crud->setEntityNameStrings('snippet', 'snippets'); // filter List operation (with search) to only show this users' entries @@ -30,7 +28,7 @@ public function setup() // if the user tries to access somone else's entries, block him $entry = $this->crud->getCurrentEntry(); - + if ($entry && $entry->created_by != backpack_auth()->user()->id) { abort(403, "You don't have access to this entry."); } diff --git a/app/Http/Controllers/Admin/SnippetCrudController.php b/app/Http/Controllers/Admin/SnippetCrudController.php index 4230ea58e..fa1742a8f 100644 --- a/app/Http/Controllers/Admin/SnippetCrudController.php +++ b/app/Http/Controllers/Admin/SnippetCrudController.php @@ -7,8 +7,8 @@ use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; /** - * Class SnippetCrudController - * @package App\Http\Controllers\Admin + * Class SnippetCrudController. + * * @property-read CrudPanel $crud */ class SnippetCrudController extends CrudController @@ -22,7 +22,7 @@ class SnippetCrudController extends CrudController public function setup() { $this->crud->setModel('App\Models\Snippet'); - $this->crud->setRoute(config('backpack.base.route_prefix') . '/snippet'); + $this->crud->setRoute(config('backpack.base.route_prefix').'/snippet'); $this->crud->setEntityNameStrings('snippet', 'snippets'); } @@ -30,25 +30,25 @@ protected function setupListOperation() { $this->crud->addColumn('name'); $this->crud->addColumn([ - 'label' => 'Category', - 'type' => 'select', - 'name' => 'category_id', - 'entity' => 'category', + 'label' => 'Category', + 'type' => 'select', + 'name' => 'category_id', + 'entity' => 'category', 'attribute' => 'name', ]); $this->crud->addColumn([ - 'label' => 'Created by', - 'type' => 'select', - 'name' => 'created_by', - 'entity' => 'creator', + 'label' => 'Created by', + 'type' => 'select', + 'name' => 'created_by', + 'entity' => 'creator', 'attribute' => 'name', ]); $this->crud->addColumn([ - 'label' => 'Updated by', - 'type' => 'select', - 'name' => 'updated_by', - 'entity' => 'updater', + 'label' => 'Updated by', + 'type' => 'select', + 'name' => 'updated_by', + 'entity' => 'updater', 'attribute' => 'name', ]); } @@ -56,7 +56,7 @@ protected function setupListOperation() protected function setupShowOperation() { $this->setupListOperation(); - + $this->crud->addColumn('description'); $this->crud->addColumn('content'); } @@ -66,32 +66,32 @@ protected function setupCreateOperation() $this->crud->setValidation(SnippetRequest::class); $this->crud->addField([ - 'type' => 'text', - 'name' => 'name', - 'label' => 'Name', + 'type' => 'text', + 'name' => 'name', + 'label' => 'Name', 'wrapperAttributes' => [ - 'class' => 'form-group col-md-6' - ] + 'class' => 'form-group col-md-6', + ], ]); $this->crud->addField([ - 'label' => 'Category', - 'type' => 'select', - 'name' => 'category_id', - 'entity' => 'category', - 'attribute' => 'name', + 'label' => 'Category', + 'type' => 'select', + 'name' => 'category_id', + 'entity' => 'category', + 'attribute' => 'name', 'wrapperAttributes' => [ - 'class' => 'form-group col-md-6' - ] + 'class' => 'form-group col-md-6', + ], ]); $this->crud->addField([ - 'type' => 'simplemde', - 'name' => 'description', - 'label' => 'Description' + 'type' => 'simplemde', + 'name' => 'description', + 'label' => 'Description', ]); $this->crud->addField([ - 'type' => 'textarea', - 'name' => 'content', - 'label' => 'Content' + 'type' => 'textarea', + 'name' => 'content', + 'label' => 'Content', ]); } diff --git a/app/Http/Requests/CreatorRequest.php b/app/Http/Requests/CreatorRequest.php index 2490d1719..422b2a3df 100644 --- a/app/Http/Requests/CreatorRequest.php +++ b/app/Http/Requests/CreatorRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests; -use App\Http\Requests\Request; use Illuminate\Foundation\Http\FormRequest; class CreatorRequest extends FormRequest diff --git a/app/Http/Requests/SnippetRequest.php b/app/Http/Requests/SnippetRequest.php index 273636471..c0e8a3c57 100644 --- a/app/Http/Requests/SnippetRequest.php +++ b/app/Http/Requests/SnippetRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests; -use App\Http\Requests\Request; use Illuminate\Foundation\Http\FormRequest; class SnippetRequest extends FormRequest @@ -26,7 +25,7 @@ public function authorize() public function rules() { return [ - 'name' => 'required|min:5|max:255', + 'name' => 'required|min:5|max:255', 'category_id' => 'required', ]; } diff --git a/app/Models/Creator.php b/app/Models/Creator.php index e3f406cb3..46ace3a22 100644 --- a/app/Models/Creator.php +++ b/app/Models/Creator.php @@ -17,7 +17,7 @@ class Creator extends BackpackUser | RELATIONS |-------------------------------------------------------------------------- */ - + public function snippets() { return $this->hasMany('App\Models\Snippet', 'created_by'); diff --git a/app/Models/Snippet.php b/app/Models/Snippet.php index 40f60f12e..63d206745 100644 --- a/app/Models/Snippet.php +++ b/app/Models/Snippet.php @@ -40,7 +40,7 @@ public function category() { return $this->belongsTo('Backpack\NewsCRUD\app\Models\Category', 'category_id'); } - + /* |-------------------------------------------------------------------------- | SCOPES diff --git a/app/Models/Traits/CreatedByTrait.php b/app/Models/Traits/CreatedByTrait.php index 63522e559..7750e192e 100644 --- a/app/Models/Traits/CreatedByTrait.php +++ b/app/Models/Traits/CreatedByTrait.php @@ -1,17 +1,15 @@ -check() ? backpack_auth()->user() : (\Auth::check() ? \Auth::user() : false ); + $user = backpack_auth()->check() ? backpack_auth()->user() : (\Auth::check() ? \Auth::user() : false); if ($user) { $this->created_by = $this->created_by ?? $user->id; @@ -26,7 +24,7 @@ public function save(array $options = []) | RELATIONS |-------------------------------------------------------------------------- */ - + public function creator() { return $this->belongsTo('App\User', 'created_by'); @@ -36,4 +34,4 @@ public function updater() { return $this->belongsTo('App\User', 'updated_by'); } -} \ No newline at end of file +} diff --git a/database/migrations/2019_12_03_115109_create_snippets_table.php b/database/migrations/2019_12_03_115109_create_snippets_table.php index e3d76c92f..92b79149c 100644 --- a/database/migrations/2019_12_03_115109_create_snippets_table.php +++ b/database/migrations/2019_12_03_115109_create_snippets_table.php @@ -1,7 +1,7 @@ 'creator/{user_id}'], function() { + Route::group(['prefix' => 'creator/{user_id}'], function () { Route::crud('snippet', 'CreatorSnippetCrudController'); }); @@ -47,6 +47,4 @@ }); } } - - -}); // this should be the absolute last line of this file \ No newline at end of file +}); // this should be the absolute last line of this file