You can override any of the BREAD views for a single BREAD by creating a new folder in resources/views/vendor/voyager/slug-name
where slug-name is the slug that you have assigned for that table. There are 4 files that you can override:
browse.blade.php
edit-add.blade.php
read.blade.php
order.blade.php
Alternatively you can override the views for all BREADs by creating any of the above files under resources/views/vendor/voyager/bread
You can override the submit button without the need to override the whole edit-add.blade.php
by extending the submit-buttons
section:
@extends('voyager::bread.edit-add')@section('submit-buttons')@parent<button type="submit" class="btn btn-primary save">Save And Publish</button>@endsection
You can override the controller for a single BREAD by creating a controller which extends Voyagers controller, for example:
<?php​namespace App\Http\Controllers;​class VoyagerCategoriesController extends \TCG\Voyager\Http\Controllers\VoyagerBaseController{//...}
After that go to the BREAD-settings and fill in the Controller Name with your fully-qualified class-name:
You can now override all methods from the VoyagerBaseController​
Only use this method if you know what you are doing We don't recommend or support overriding all controllers as you won't get any code-changes made in future updates.
If you want to override any of Voyagers core controllers you first have to change your config file config/voyager.php
:
/*|--------------------------------------------------------------------------| Controllers config|--------------------------------------------------------------------------|| Here you can specify voyager controller settings|*/​'controllers' => ['namespace' => 'App\\Http\\Controllers\\Voyager',],
Then run php artisan voyager:controllers
, Voyager will now use the child controllers which will be created at App/Http/Controllers/Voyager
You are also able to override Voyagers models if you need to. To do so, you need to add the following to your AppServiceProviders register method:
Voyager::useModel($name, $object);
Where name is the class-name of the model and object the fully-qualified name of your custom model. For example:
<?php​namespace App\Providers;​use Illuminate\Support\ServiceProvider;use Illuminate\Events\Dispatcher;use TCG\Voyager\Facades\Voyager;​class AppServiceProvider extends ServiceProvider{public function register(){Voyager::useModel('DataRow', \App\DataRow::class);}// ...}
The next step is to create your model and make it extend the original model. In case of DataRow
:
<?php​namespace App;​class DataRow extends \TCG\Voyager\Models\DataRow{// ...}
If the model you are overriding has an associated BREAD, go to the BREAD settings for the model you are overriding and replace the Model Name with your fully-qualified class-name. For example, if you are overriding the Voyager Menu
model with your own App\Menu
model: