Overriding files

Overriding BREAD Views

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

Using custom Controllers

Overriding submit button:

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

Using custom Controllers

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

Overriding Voyagers Controllers

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

Overriding Voyager-Models

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
{
    // ...
}

Last updated