I am putting a project together by following this tutorial: Laravel 8: Basic CRUD Blog Tutorial with Bootstrap https://www.parthpatel.net/laravel-8-crud-blog-tutorial/
When the PostController index has
public function index()
{ $posts = Post::all();
return View('posts.index', compact('posts'));
}
The exception is View [postsindex] not found
but when the return is
return view::make('posts.index', compact('posts'));
The exception is
Class 'AppHttpControllersView' not found
Can someone explain the difference? What is the correct syntax for the return
Advertisement
Answer
view is a helper function for dealing with the same View Factory as the facade uses:
return view('posts.index', compact('posts'));
Using View::make is using the View facade as a static proxy to the view factory:
return View::make('posts.index', ...);
Since you have not aliased the View class PHP is assuming when you reference View that you mean View in the current declared namespace of the file, which is AppHttpControllers, so it is looking for AppHttpControllersView. You would need to alias this reference for View or use its Fully Qualified Class Name:
use IlluminateSupportFacadesView; ... return View::make(...);
Or without the alias:
return IlluminateSupportFacadesView::make(...);
view(...) and View::make(...) are both causing make to be called on the View Factory to create a new View instance.
Laravel 8.x Docs – Views – Creating and Rendering Views view() View::make()