我正在使用Blade模板与Laravel,我尝试使用@foreach
循环来显示通知。问题是,如果我说了10个通知,则第一个通知会重复10次。
输出每个通知的代码:
@foreach ( Auth::user()->unreadNotifications as $notification )
{{ $notification->type->web_template }}
{{ $notification->id }}
@include($notification->type->web_template)
@endforeach
web_template
将输出模板的路径:notifications.web.user_alert
对于循环的每次迭代,{{ $notification->type->web_template }}
和{{ $notification->id }}
将输出他们应该提供的内容,但@include($notification->type->web_template)
每次只输出第一个通知。
所以输出看起来像:
156 notification.web.new_message
您收到了来自Joe的新消息。
154 notification.web.user_alert
您收到了来自Joe的新消息。
145 notification.web.new_like
您收到了来自Joe的新消息。
我认为可能存在某种缓存问题,但我无法找到遇到同样问题的人。
有什么想法吗?
更新:添加一些代码
示例通知视图:
@extends('layouts.notification-wrapper')
@section('url', url('jobs/'.$notification->job_id.'#highlight'.$notification->bid_id))
@section('image', '/assets/img/no-photo.jpg')
@section('header', $notification->collector->firstname . ' ' . $notification->collector->secondname)
@section('description')
has placed a bid of €{{ number_format($notification->bid()->withTrashed()->first()->amount,0) }} on your job.
@stop
通知包装:
<li @if(!$notification->read)
class="unread"
@endif>
<a href="@yield('url')" data-id="{{ $notification->id }}">
<div class="pull-left">
<img src="@yield('image')" class="img-circle" alt="user image">
</div>
<h4>
@yield('header')
<small><i class="fa fa-clock-o"></i> {{ $notification->created_at->diffForHumans()}}</small>
</h4>
<p> @yield('description')</p>
</a>
</li>
答案 0 :(得分:3)
回答我自己的问题!
找到了这个:Laravel Blade Templates Section Repeated / cache error
基本上无论它的工作方式如何,我都需要在循环和使用@yield
时覆盖我的部分......我想。因此,我需要在视图中将@stop
替换为@overwrite
。