Forum

working example for overriding outputs?

Posted in CategoryDevelopment
  • Bret Watson    ( User ) 1 month ago

    I am starting to try and overide some of the outputs.. but running into problems with the docs... Bits seem to be missing like where some of the files are supposed to be.


     


    I was wondering if anyone was willing to fill int he gaps in the docs, or was willing to reply here with a working example?

  • Bret Watson    ( User ) 1 month ago

    Trying to bump this..


     


    running with a clean 1.3.7 zip.. and following the documentation to teh letter (except when teh guidance was missing!)


    I set the .env to have debug true and development env


    I get 


    "Class 'Modules\FooBar\Providers\View' not found"


    My Customer View Composer is in \modules\FooBar\Http\ViewComposers\CustomersViewComposer.php


     


    The actual cusotmers view is simply a copy of the base customer view with no changes


    I'm assuming its just bad documentation?

  • Bret Watson    ( User ) 1 month ago

    Ah fixed it..


     


    for future visitors..


     


    when you create the module - if you want to override output - you also need to add 


    use Illuminate\Support\Facades\View;


    to the top of the FooBar Service provider

  • Bret Watson    ( User ) 1 month ago

    I spoke too soon.. now it throws


    Class Modules\FooBar\Http\ViewComposers\Customers does not exist


    it does, but clearly somewhere its not being used

  • Denis Duliçi    ( Admin ) 1 month ago

    Make sure that the namespace of Customers file is correct.

  • Bret Watson    ( User ) 1 month ago

    Well I think it is. it was directly from the example.. and the View composer is in Http/ViewComposers

  • Bret Watson    ( User ) 1 month ago

    phew.. ok it turned out to be a typo in the boot code


     


    Now the next challenge - how to override the output for invoice printing.. since the path for pringing invoices is '/incomes/invoices/<invoice id>/print it doesn't lend itself to the 'incomes.invoices.print' 

  • Bret Watson    ( User ) 1 month ago

    Or not, the moment I worked out it needed to over-ride incomes.invoices.invoice it failed

  • Bret Watson    ( User ) 1 month ago

    code for service provider boot


     


    namespace Modules\FooBar\Providers;


     


    use Illuminate\Support\ServiceProvider;


    use Illuminate\Database\Eloquent\Factory;


    use App\Models\Income\Invoice;


    use View;


    use Illuminate\Support\Facades\Log;


     


     


    class FooBarServiceProvider extends ServiceProvider


    {


        /**


         * Indicates if loading of the provider is deferred.


         *


         * @var bool


         */


        protected $defer = false;


     


        /**


         * Boot the application events.


         *


         * @return void


         */


        public function boot()


        {


            $this->registerTranslations();


            $this->registerConfig();


            $this->registerViews();


            $this->registerFactories();


            


            Log::debug('in FooBar SP boot.');


            


    View::composer([


                'incomes.invoices.invoice',


            ], 'Modules\FooBar\Http\ViewComposers\Invoices');


        }


     

  • Bret Watson    ( User ) 1 month ago

    and view composer (invoice.blade is simply copied from teh default at the moment)


    <?php


     


    namespace Modules\FooBar\Http\ViewComposers;


     


    use Illuminate\View\View;


    use Illuminate\Support\Facades\Log;


     


    class Invoices


    {


        /**


         * Bind data to the view.


         *


         * @param  View  $view


         * @return mixed


         */


        public function compose(View $view)


        {


     


            // Override just the 'content' section


            //$view->getFactory()->startSection('content', view('foobar::customers.create'));


     


            // Override the whole file


            $view->setPath(view('foobar::invoices.invoice')->getPath());


     


            // Push to a stack


            //$view->getFactory()->startPush('scripts', view('foobar::script'));


        }


    }


     

Please login or register to leave a response.