How to Create Reusable Components in Laravel?
In this tutorial, i would like to show you how to create blade reusable component in laravel using components and slots. laravel provide components and slots for creating blade component in laravel application.
You can easily create blade component in laravel 5, laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11 using this example.
In this example, we will create one card component file and we will reuse that file in our other blade file. i used bootstrap card so, you just need to add $class, $title and $slot variable. so you have to just follow two step to done that example.
You can see preview of using components.
Create Component File
In this step, we will create new folder for components and create card blade file for our component as like bellow:
resources/views/components/card.blade.php
<div class="card {{ $class }}">
<h5 class="card-header">{{ $title }}</h5>
<div class="card-body">
<p class="card-text">{{ $slot }}</p>
</div>
</div>
Reuse Component
Now we will create one route with blade file. on that blade file we will reuse our created component on that file with different classes as like bellow:
Let's create route and blade file:
routes/web.php
Route::get('my-components', function () {
return view('my_components');
});
resources/views/my_components.blade.php
<!DOCTYPE html>
<html>
<head>
<title>How to create reusable blade components in Laravel - ItSolutionStuff.com</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.css" />
</head>
<body>
<div class="container">
<h3>How to create reusable blade components in Laravel - ItSolutionStuff.com</h3>
<!-- For Primary -->
@component('components.card')
@slot('class')
bg-primary
@endslot
@slot('title')
This is from ItSolutionStuff.com(Primary)
@endslot
My components with primary
@endcomponent
<br/>
<!-- For Danger -->
@component('components.card')
@slot('class')
bg-danger
@endslot
@slot('title')
This is from ItSolutionStuff.com(Danger)
@endslot
My components with primary
@endcomponent
<br/>
<!-- For Success -->
@component('components.card')
@slot('class')
bg-success
@endslot
@slot('title')
This is from ItSolutionStuff.com(Success)
@endslot
My components with primary
@endcomponent
</div>
</body>
</html>
Now you can run and check it.
I hope it can help you.
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Laravel Scout Algolia Search Example
- Laravel Typeahead Search Example Tutorial
- Laravel - How to Get .env Variable in Blade or Controller?
- Laravel Vue Datatables Component Example
- Laravel Dynamically Add or Remove Input Fields using JQuery
- Laravel 5.5 New Feature - BladeIf Directive Example
- How to Create Blade File in Laravel using CMD?
- Laravel 5.4 New Feature - Add New Components & Slots in Blade Template