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时,组件内容能正常显示。
解决方法:
修正变量传递的语法
用冒号传递PHP变量时,变量名前不要加$,同时去掉多余空格,正确写法:<x-workingtime-timeline :workingtimeArray="$workingtime_array" />删除组件内的语法错误
组件里@endforeach后面的分号是多余的,会导致解析错误,删掉即可:@foreach ($workingtimeArray as $worktime) <p>Start: {{ $worktime->time_begin }} </p> <p>End: {{ $worktime->time_end }} </p> @endforeach确认组件文件位置
匿名组件必须放在resources/views/components/目录下,文件名要和组件名完全对应(比如workingtime-timeline.blade.php),确保Blade能正确加载组件。可选:给props设置默认值
为了避免变量未定义时报错,可以给props设置默认空数组:@props(['workingtimeArray' => []])
内容的提问来源于stack exchange,提问作者TobiasJ
相关产品推荐
相关产品推荐

