我在下面的示例blade
模式中重复了两次。我想知道如何才能应用DRY原则。它位于@foreach
循环内,因此每个视图生成20次。我不想使用@include
,因为我认为在每次调用时都会将所有不必要的变量传递给包含文件(也重复20次)。
由于下面的模式,我有多达1000行blade
个文件。这是正常的,还是我可以为此做些什么。
感谢。
@foreach ($posts as $post)
...
<div class="post-header">
{{ mb_convert_case(str_replace('i', 'İ', $post->user->first_name), MB_CASE_TITLE) }} has posted,
@if($nhits)
@if(isset($nhits[$post->id]))
it has {{ $nhits[$post->id] }} hits,
@endif
@endif
@if($post->likings->count())
@if($post->likings->count())
{{ $post->likings->count() }} persons liked it,
@else
nobody liked it,
@endif
@endif
@if($post->comments->count())
{{ $post->comments->count() }} comments received.
@else
no comments yet.
@endif
<div>
...
@endforeach
答案 0 :(得分:0)
如果每次渲染视图时都希望将相同的数据绑定到视图,视图编辑器可以帮助您将该逻辑组织到一个位置。通常引用的示例用例是博客中的侧边栏或标题中的使用配置文件信息。
您还可以通过将视图数组作为第一个参数传递给composer方法,一次将视图编辑器附加到多个视图。
视图组合器是在呈现视图时调用的回调或类方法。如果每次渲染视图时都希望将数据绑定到视图,则视图编辑器可以帮助您将该逻辑组织到一个位置。
来自Laravel文档:https://laravel.com/docs/5.5/views#view-composers
答案 1 :(得分:0)
如果每个视图中的数据不同,您可以使用组件和广告位。
来自Laravel文档:https://laravel.com/docs/5.5/blade#components-and-slots
创建可重用的组件以在整个应用程序中重用
<!-- /resources/views/alert.blade.php -->
<div class="alert alert-danger">
{{ $slot }}
</div>
在刀片视图中构建组件
<div class="alert alert-danger">
<div class="alert-title">{{ $title }}</div>
{{ $slot }}
</div>
注入数据
@component('alert')
@slot('title')
Forbidden
@endslot
You are not allowed to access this resource!
@endcomponent
将数据数组中的其他数据作为@component指令的第二个参数传递。所有数据都将作为变量提供给组件模板。
@component('alert', ['foo' => 'bar'])
...
@endcomponent