onkbear/backpack-nested-crud is a Laravel package.
It currently has 20 GitHub stars and 8.361 downloads on Packagist (latest version 2.0.2).
Install it with composer require onkbear/backpack-nested-crud.
Discover more Laravel packages by onkbear
or browse all Laravel packages to compare alternatives.
Last updated
This package gives nested CRUD operations on your edit page.
Inspired by Nested resources in Backpack CRUD
E.g.
Gives the avility of CRUD operations of comment model as a field on user edit page.
For Laravel-Backpack/CRUD v4.0, please use ^1.1.

composer require onkbear/backpack-nested-crud
There are four (instead of create, read, update, delete) nested CRUD operations.
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedListOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedCreateOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedUpdateOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedDeleteOperation;
Please create User model and Comment model with relationship.
Please create UserCrudController.
class UserCrudController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\ListOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation;
public function setup()
{
CRUD::setModel('App\Models\User');
CRUD::setRoute(config('backpack.base.route_prefix').'/user');
CRUD::setEntityNameStrings('user', 'users');
}
protected function setupListOperation()
{
CRUD::addColumns(['name']);
}
protected function setupCreateOperation()
{
CRUD::addField([
'name' => 'name',
'label' => 'Name',
'type' => 'text',
'tab' => 'Texts',
]);
}
protected function setupUpdateOperation()
{
$this->setupCreateOperation();
CRUD::addField([
'name' => 'comments',
'label' => 'Comment',
'type' => 'nested_crud',
'target' => 'comment',
'model' => 'App\Models\Comment',
'tab' => 'Comments', // optional
]);
}
}
use App\Http\Requests\CommentRequest as StoreRequest;
use App\Http\Requests\CommentRequest as UpdateRequest;
class UserCommentCrudController extends CrudController
{
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedListOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedCreateOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedUpdateOperation;
use \Onkbear\NestedCrud\app\Http\Controllers\Operations\NestedDeleteOperation;
public function setup()
{
// set the Eloquent object
CRUD::setModel(\App\Models\Comment::class);
// get the user_id parameter
$userId = \Route::current()->parameter('user_id');
// set a different route for the admin panel buttons
CRUD::setRoute(config('backpack.base.route_prefix').'/user/'.$userId.'/comment');
// show only specific user's comments
CRUD::addClause('where', 'user_id', $userId);
// ...
}
protected function setupNestedListOperation()
{
// ...
}
protected function setupNestedCreateOperation()
{
CRUD::setValidation(StoreRequest::class);
// get the user_id parameter
$userId = \Route::current()->parameter('user_id');
// add a foreign key field as a hidden field (may need only for create operation)
CRUD::addField([
'name' => 'user_id',
'type' => 'hidden',
'value' => $userId
]);
// ...
}
protected function setupNestedUpdateOperation()
{
CRUD::setValidation(UpdateRequest::class);
// ...
}
Setup the route in route/custom.php
Route::crud('user/', 'UserCrudController');
Route::group(['prefix' => 'user/{user_id}'], function() {
Route::crud('comment', 'UserCommentCrudController');
});
You have following routes.
admin/user/admin/user/{user_id}/comment/That's it.
You can also use backpack operations into UserCommentCrudController or extend CommentCrudController if it is exist.
There are two templates for list view.
nested_crud::nested_list : table view (default)nested_crud::nested_grid_list : grid view
If you would like to use grid view, simply use the set method below.
// UserCommentCrudController.php
protected function setupNestedListOperation()
{
$this->crud->setListView('nested_crud::nested_grid_list');
}
If you created view files with exact same name in resources/views/vendor/backpack/nested_crud folder, it will override.