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 package itself. Is there an elegant to do this?
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);
}
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');
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With