Переопределить представления CRUD

Я хотел бы переопределить представления CRUD пакета CRUD Laravel Backpack, потому что я хочу внести небольшие изменения в макет. Но, очевидно, я не хочу менять сам пакет CRUD. Есть ли элегантный способ сделать это?


person Sybrand Hoeksma    schedule 02.09.2016    source источник


Ответы (3)


Перед загрузкой каких-либо представлений Backpack for Laravel проверяет вашу папку resources/views/vendor/backpack/crud на наличие пользовательских представлений. Если вы этого не сделаете, он просто загрузит представления в пакете.

Если вы хотите перезаписать файл блейда для всех CRUDS, вы можете просто поместить файл с правильным именем в нужную папку. Взгляните на как файлы организованы в пакете.

Если вы хотите перезаписать файл блейда только для одного CRUD, используйте решение Сачина.

person tabacitu    schedule 02.09.2016

В вашем контроллере, который расширяет Backpack\CRUD\app\Http\Controllers\CrudController, вам нужно переопределить метод, такой как index, create, edit, который вы хотите изменить. Все методы в-

Backpack\CRUD\app\Http\Controllers\CrudController

Все способы здесь. Вам нужно изменить здесь

 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);
}
person Sachin    schedule 02.09.2016
comment
Можете ли вы прокомментировать имя файла и путь, который вы создаете? Если бы это было для обновления записи модели книги, был бы шаблон блейда в /resources/views/vendor/backpack/crud/book/edit.blade.php? Я не совсем разобрался. - person Dubby; 29.08.2017
comment
Я разобрался. В моем случае я хотел отредактировать запись курса, поэтому я создал файл в /resources/views/course/edit.blade.php и назвал его с помощью view('course.edit'). - person Dubby; 30.08.2017

Нашел способ, даже не переопределяя метод index(), просто используйте $this->crud->setListView() в методе настройки вашего CrudController, например:

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

таким образом, он получит представление в разделе «/resources/views/vendor/backpack/crud/ Different_list.blade.php» вместо представления по умолчанию в пакете.

Помимо setListView(), также доступны setEditView(), setCreateView(), setUpdateView().... Надеюсь, поможет.

вы можете обратиться к https://laravel-backpack.readme.io/docs/crud-full-api для более подробной информации.

// 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');
person Ryan Ye    schedule 18.09.2017