将Php变量传递到Laravel刀片组件

oalqel3c  于 2023-02-11  发布在  PHP
关注(0)|答案(3)|浏览(129)

我用php artisan make:component testcomponent制作了一个laravel组件,并为它创建了两个文件;一个是刀片和第二个是php类文件.这里是刀片文件:

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

这是php文件

<?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');
    }
}

我在blade文件中使用<x-testcomponent/>的方式调用此组件
但是现在,我如何将一个来自控制器的变量传递给这个组件呢?

q3aa0525

q3aa05251#

首先,到php组件文件并执行此操作。(声明一个变量并从来自构造函数的变量中赋值)

<?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');
    }
}

然后在视图文件中调用blade组件;你可以这样打电话

<x-testcomponent :data=$data/>

其中$data是来自控制器的变量
这就解决了!!

t9aqgxwy

t9aqgxwy2#

在控制器中,您可以通过添加view函数将数据传递给视图,如下所示:

$data =
[
    'something' => 'some contents'
];

return view('home', $data);

将“home”更改为顶级视图。
假设“home”是您的顶层视图,则home将以下列内容开始:

<x-testcomponent :data="$data" />

注意结尾处的'/〉'。如果您在文件结尾处关闭x-test组件,您只需要:

<x-testcomponent :data="$data" >

最后,在TestComponent View类中,传递并保存数据,如下所示:

class TestComponent extends Component
{
    public $data;

    public function __construct($data)
    {
        $this->data = $data;
    }
}

然后,在您的testcomponent.blade.php中,下面的代码现在应该可以工作了:

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

8tntrjer3#

那么我们可以发送多个变量,例如:

<x-testcomponent :user=$user :data=$data/>

相关问题