Add class to body in laravel view

Updated at 03-May-2021, By samar

Add class to body in laravel view

With this article, we will examine several different instances of how to solve the "Add class to body in laravel view".

There are lots of ways in which you can add class to the body in a laravel view file. It is required if you want to add some properties to a particular page. The Best way you can add class to the body in laravel view is by passing the variable class from child view to layout file while extending the layout.
  • Pass variable class from child view to layout

    //Extending sidebar layout in child view and passing the variable name to the layout.
    //resources\views\article.blade.php 
    @extends('layouts.sidebar', ['body_class' => 'article'])
    
    //Display variable name to body class in layout.
    //resources\views\layouts\sidebar.blade.php
    <body class="{{ $body_class ?? ''}}">
    //Or
    <body class="{{ !empty($body_class) ? $body_class : '' }}">
    

    You can pass variable class name from the child view (article.blade.php) to the sidebar layout and after that, you can display class to your body in the laravel layout file (sidebar.blade.php) which you are extending in the child view file.

  • Add class to body using @yield directive in laravel

    //Display class name in laravel layout file.
    //resources\views\layouts\sidebar.blade.php
    
    <body class="@yield('body_class')">
    
    
    //Pass class name using @section directive in child template.
    //resources\views\article.blade.php 
    
    @section('body_class', 'article')
    

    You can add class to the body tag in Laravel view file by passing the class name from the child template (article.blade.php) to the layout template (layouts/sidebar.blade.php) using @section directive and display in layout template using @yield directive.

  • Add class name to body using current route name

    //resources\views\<layouts>\<default>.blade.php
    //Or
    //resources\views\<index>.blade.php
    <body class="current_route_name-{{ Route::currentRouteName() }}">
    

    You can pass a class name to the body using current route name in laravel using Route::currentRouteName() in your layout file or child template.

  • Add class to body using url segments in laravel

    //resources\views\<layouts>\<default>.blade.php
    <body class="template-{{ collect(\Request::segments())->implode('-') }}">
    
  • Add class to body using view composers

    //routes\web.php
    View::composer('*', function ($view) {
        View::share('viewName', $view->getName());
    });
    
    //Or
    
    //app\Providers\AppServiceProvider.php
    //Before class definition
    use View;
    //Inside boot method of AppServiceProvider class
    public function boot()
    {
        View::composer('*', function ($view) {
            View::share('viewName', $view->getName());
        });
    }
    
    //resources\views\<layouts>\<default>.blade.php
    <body class="template-{{ $viewName }}">
    

    You can add class to the body in laravel view using view composer. View composers are callbacks or class methods that are called when a view is rendered. You can pass class name using View::share() method and display it using {{ $viewName }} in the laravel view file.

Back to code snippet queries related laravel