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
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.
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');
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);
}