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)