phplaravellaravel-bladelaravel-components

Passing Php variable to Laravel Blade Component


I have made a laravel component using php artisan make:component testcomponent for which two files are created; one is blade and second one is php class file. here is the blade file:

<div>
    {{ $data }}
</div>

and here is the php file

<?php

namespace App\View\Components;

use Illuminate\View\Component;

class testcomponent extends Component
{
    /**
     * Create a new component instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the view / contents that represent the component.
     *
     * @return \Illuminate\Contracts\View\View|\Closure|string
     */
    public function render()
    {
        return view('components.testcomponent');
    }
}

And i called this component in a blade file using this way <x-testcomponent/>

But Now, how can i pass a variable coming form controller to this component?


Solution

  • First of all go to the php component file and do this.(Declare a variable and assign a value from variable coming from constructor)

    <?php
    
    namespace App\View\Components;
    
    use Illuminate\View\Component;
    
    class testcomponent extends Component
    {
        public $data;
        public function __construct($data)
        {
            //
            $this->data=$data;
        }
    
      
        public function render()
        {
            return view('components.testcomponent');
        }
    }
    

    and then in the view file where you call blade component; you can call like this

    <x-testcomponent :data=$data/>
    

    where $data is the variable coming from controller

    Thats solved!!