Laravel将集合传递给组件

时间:2020-03-04 21:57:18

标签: laravel laravel-5 eloquent laravel-blade

我有一个视图,其中包含用于显示房屋属性信息的组件。

<div class="row">
    @foreach($matchs as $match)
        @component('pages.processes.offerdemand.matchs.matchbox')
        @endcomponent
    @endforeach
</div> 

在我的控制器中,我要返回一个集合,并且根据集合的全部元素,每个“ matchbox”的创建都正确。

class OfferdemandsmatchsController extends Controller
{
    public function index ($id) {
        $matchs = DB::table('offerdemandsmatchs')
                ->join('properties', 'offerdemandsmatchs.prop_id', '=', 'properties.prop_id')
                ->where('offerdemandsmatchs.offerdemand_id', '=', $id)
                ->select('properties.*', 'offerdemandsmatchs.created_at as matchcreated_at', 'offerdemandsmatchs.created_at as matchupdated_at',
                'offerdemandsmatchs.like', 'offerdemandsmatchs.id as matchid')
                ->get();
        return view('pages.processes.offerdemand.matchs.index', compact('matchs'));

    }
}

我面临的问题是我想将变量$ match传递给每个框,看起来组件仅接受数组而不是集合。

<div class="row">
    @foreach($matchs as $match)
        @component('pages.processes.offerdemand.matchs.matchbox', $match)
        @endcomponent
    @endforeach
</div>
Facade\Ignition\Exceptions\ViewException
Argument 2 passed to Illuminate\View\Factory::startComponent() must be of the type array, object given, called in C:\Desarrollo\laragon\www\kw-plataforma\storage\framework\views\60fac8943d076d952347a84172f358cd1ee65f54.php on line 39 (

如何将数据传递到组件盒?

致谢

1 个答案:

答案 0 :(得分:2)

组件的参数必须是键=>值对的数组。

用一个$match数组替换单个参数['match' => $match]。 (如果您在组件中需要更多参数,则可以将它们添加到数组中)

<div class="row">
    @foreach($matchs as $match)
        @component('pages.processes.offerdemand.matchs.matchbox', ['match' => $match])
        @endcomponent
    @endforeach
</div>