Override CRUD views

后端 未结 3 1034
悲&欢浪女
悲&欢浪女 2021-02-09 08:02

I would like to override the CRUD views of the Laravel Backpack CRUD package, because I want to make small changes to the layout. But obviously I don\'t want to change the CRUD

相关标签:
3条回答
  • 2021-02-09 08:42

    Before loading any views, Backpack for Laravel checks your resources/views/vendor/backpack/crud folder to see if you have any custom views. If you don't, it will just load the views in the package.

    If you want to overwrite a blade file for all CRUDS, you can just place a file with the right name in the right folder. Take a look at how the files are organized in the package.

    If you want to overwrite a blade file for just one CRUD, use Sachin's solution.

    0 讨论(0)
  • 2021-02-09 08:44

    Found a way not even having to override the index() method, just use $this->crud->setListView() in your setup method of your CrudController, ex:

    $this->crud->setListView('backpack::crud.different_list', $this->data);
    

    thus, it will get the view under '/resources/views/vendor/backpack/crud/different_list.blade.php' instead of the default one in the package.

    Besides setListView(), setEditView(), setCreateView(), setUpdateView()....are also available. hope it helps.

    you can refer to https://laravel-backpack.readme.io/docs/crud-full-api for more detail.

    // use a custom view for a CRUD operation
    $this->crud->setShowView('your-view');
    $this->crud->setEditView('your-view');
    $this->crud->setCreateView('your-view');
    $this->crud->setListView('your-view');
    $this->crud->setReorderView('your-view');
    $this->crud->setRevisionsView('your-view');
    $this->crud->setRevisionsTimelineView('your-view');
    $this->crud->setDetailsRowView('your-view');
    
    0 讨论(0)
  • 2021-02-09 08:56

    In your controller which is extending Backpack\CRUD\app\Http\Controllers\CrudController you need to override the method like index,create,edit which you want to change. All method are in-

    Backpack\CRUD\app\Http\Controllers\CrudController
    

    All the methods are here. You need to change here

     public function index()
    {
        $this->crud->hasAccessOrFail('list');
    
        $this->data['crud'] = $this->crud;
        $this->data['title'] = ucfirst($this->crud->entity_name_plural);
    
        // get all entries if AJAX is not enabled
        if (! $this->data['crud']->ajaxTable()) {
            $this->data['entries'] = $this->data['crud']->getEntries();
        }
    
        // load the view from /resources/views/vendor/backpack/crud/ if it exists, otherwise load the one in the package
        // $this->crud->getListView() returns 'list' by default, or 'list_ajax' if ajax was enabled
        return view('your_view_name', $this->data);
    }
    
    0 讨论(0)
提交回复
热议问题