There is no magic, but you can easily override ViewService in 3 steps:
1.Create your factory view ( your_project_path/app/MyViewFactory.php )
<?php namespace App; use Illuminate\View\Factory; class MyViewFactory extends Factory { public function make($view, $data = array(), $mergeData = array()) { if (\Request::ajax()) { return $data; } return parent::make($view, $data, $mergeData); } }
2.Create a view service provider ( your_project_path/app/providers/MyViewProvider.php )
<?php namespace App\Providers; use App\MyViewFactory; use Illuminate\View\ViewServiceProvider; class MyViewProvider extends ViewServiceProvider { public function register() { parent::register(); } public function registerFactory() { $this->app->singleton('view', function($app) {
3.in your_project_path/config/app.php : change 'Illuminate\View\ViewServiceProvider', to 'App\Providers\MyViewProvider',
What does it do:
it tells your application to use a different view provider that will register your view factory $env = new MyViewFactory($resolver, $finder, $app['events']); on line 33 of MyViewProvider.php , which will check if the request is AJAX and return if true, or continue with the original behavior return parent::make($view, $data, $mergeData); in line MyViewFactory.php 19
Hope this helps you
panos source share