定制 onkbear/backpack-nested-crud 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

onkbear/backpack-nested-crud

最新稳定版本:2.0.2

Composer 安装命令:

composer require onkbear/backpack-nested-crud

包简介

README 文档

README

Latest Stable Version Software License

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.

Demo

Install

composer require onkbear/backpack-nested-crud

Usage

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;

Example

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
        ]);
    }
}

Create the CRUD controller

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);

        // ...
    }

Add the route

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.

Customize views for list view

There are two templates for list view.

  • nested_crud::nested_list : table view (default)
  • nested_crud::nested_grid_list : grid view

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.

统计信息

  • 总下载量: 8.32k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 21
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 20
  • Watchers: 3
  • Forks: 10
  • 开发语言: Blade

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-11-14