Laravel View Exists
Published on by Eric L. Barnes
Laravel comes includes with a lot of little helpers that aim to help you save time and keep your code clean. One of those is the View exists method that allows you to check if a blade file does in fact exist.
During the rebuild of this site, I used it in a few places like the category listing page so that I can different designs depending on the category you are looking at. For example, the Laravel Packages category is the default and the Laravel Tutorials is a custom body.
One way of doing this is to set specific routes for what you would like to customize but the view exists allows me to do it all within the one controller. Here is a code sample:
class CategoryController extends Controller{ public function show($slug) { $category = Category::with('posts')->where('slug', $slug)->firstOrFail(); if (view()->exists('category.custom.'.$category->slug)) { $view = 'category.custom.'.$category->slug; } else { $view = 'category.show'; } return view($view, [ 'category' => $category, ]); }}
With this simple check in place, I can create a new blade file in the category/custom/* directory that matches the slug name and it’s automatically used.
Here is also a Youtube video I made of this process, just be warned the volume is low.
Eric is the creator of Laravel News and has been covering Laravel since 2012.