The following is an excerpt from a post I published on my blog. The full post is available here: https://yossiabramov.com/blog/laravel-7-class-based-components-part-i
With Laravel 7.x we now have two new approaches or ways of writing our blade components: class based components and anonymous components. In this post I will focus on creating and including class based components as well as passing data to them.
Create
We can create components with an artisan
command:
php artisan make:component Header
This will create two files: app/View/Components/Header.php
and resources/views/components/header.blade.php
.
Class
In the folder app/View/Components/
will now have a Header
class that will help us in handling our component’s logic. The Header
class will look like this:
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Header extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\View\View|string
*/
public function render()
{
return view('components.header');
}
}
As you can see, our Header
class has a render()
function that renders our view. We will return to this class again after having a quick look at our view.
View
In the folder resources/views/components/
we will now have a header.blade.php
blade file that will contain our blade view. header.blade.php
will look like this:
<div>
<!-- Well begun is half done. - Aristotle -->
</div>
Nothing but a div and an inspirational quote! 💪 . BTW, you can generate more of these amazing quotes by running:
php artisan inspire
Let’s add some hardcoded content to our header.blade.php
so we can see it in action:
<div>
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Corporis, fuga.
</div>
Include
Including our component is a bit different from previous Laravel versions:
<x-header />
Quick Example
Here is a quick example for creating and including a component with more than one word in its name.
Let’s create the component SpecialHeading
:
php artisan make:component SpecialHeading
This will create two files: app/View/Components/SpecialHeading.php
and resources/views/components/special-heading.blade.php
.
And this is how you would include it:
<x-special-heading />
Read the full post on my website :-)
https://yossiabramov.com/blog/laravel-7-class-based-components-part-i
Top comments (0)