You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blade匿名组件传值后无法显示问题求助

问题:Blade匿名组件接收数据后不显示内容

我是Blade新手,想用匿名组件复用高频内容,但传递数据时组件完全不显示内容。以下是相关代码:

控制器代码

public function edit(Workingtime $workingtime)
{
  $user = User::find(Auth::id());
  $workingtime_array = $user->getWorkingtimesOfThisDay($workingtime->id);
        
  return view('workingtime-edit', compact('workingtime_array', 'workingtime'));     
}

视图文件:workingtime-edit.blade.php

<p>Overview of Workingtimes</p>

@if(count($workingtime_array) > 0)
    <x-workingtime-timeline :workingtimeArray = "$workingtime_array"/>
@endif

匿名组件文件:workingtime-timeline.blade.php

@props(['workingtimeArray']) 

@php

    if(isset($workingtimeArray) AND count ($workingtimeArray) > 0){
        $start = strtotime($workingtimeArray[0]->time_begin);
        $end = strtotime($workingtimeArray[count($workingtimeArray)-1]->time_end);
    } 

@endphp

@foreach ($workingtimeArray as $worktime)

    <p>Start: {{ $worktime->time_begin }} </p>
    <p>End: {{ $worktime->time_end }} </p>

@endforeach;

我试过几种组件调用写法都无效:

  • <x-workingtime-timeline :workingtimeArray = "$workingtime_array"> </x-workingtime-timeline>
  • <x-workingtime-timeline workingtimeArray = "$workingtime_array"/>

另外,不使用变量和@props时,组件内容能正常显示。


解决方法:

  1. 修正变量传递的语法
    用冒号传递PHP变量时,变量名前不要加$,同时去掉多余空格,正确写法:

    <x-workingtime-timeline :workingtimeArray="$workingtime_array" />
    
  2. 删除组件内的语法错误
    组件里@endforeach后面的分号是多余的,会导致解析错误,删掉即可:

    @foreach ($workingtimeArray as $worktime)
        <p>Start: {{ $worktime->time_begin }} </p>
        <p>End: {{ $worktime->time_end }} </p>
    @endforeach
    
  3. 确认组件文件位置
    匿名组件必须放在resources/views/components/目录下,文件名要和组件名完全对应(比如workingtime-timeline.blade.php),确保Blade能正确加载组件。

  4. 可选:给props设置默认值
    为了避免变量未定义时报错,可以给props设置默认空数组:

    @props(['workingtimeArray' => []])
    

内容的提问来源于stack exchange,提问作者TobiasJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:03:10