这是一个关于在Laravel刀片指令中使用变量的问题。我有一个有各种仪表板的网站。每个仪表板都有一个登陆页,显示每个子页面的卡片。
我有一个登陆页刀片模板,其中包含以下代码:
<div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3">
<div class="col">
@yield('card-1')
</div>
<div class="col">
@yield('card-2')
</div>
<div class="col">
@yield('card-3')
</div>
</div>这个想法是,孩子的刀片可以包括每一张卡片与它自己的细节,如下所示:
@部分(“卡片-2”)这是我的卡@停止
这个很好,但我想把它放大。在某些页面上,我不想使用所有的卡片插槽。事实上,我根本不想摆弄这一页。我希望这些卡片是动态生成的。我创建了一个数据库表来保存所有的卡片信息,包括一张卡片是否应该可见。
在页面上,我将只调用pages模型,只选择可见的卡片,然后循环遍历收集来创建卡片。测试后,除使用计数器变量动态设置节名外,每个位都可以工作。
例如,下面是登陆页面刀片中的一些内容:
<?php
use Illuminate\Http\Request;
use App\Models\Page;
$rootPath = url('/');
//Get only pages that are visible for this dashboard
$pages = Page::where('dashboard_id', 2)->where('menu_display', 1)->get();
//increment counter, for dynamic card section naming
$i=1;
?>
//Loop through each page result
<?php foreach($pages as $page) { ?>
@section('card-{{$i}}') //Set card section dynamically; THIS FAILS
<div id="{{$page->page_name}}" class="" title=""></div>
<div class="card" data-bs-toggle="tooltip" data-bs-html="true" data-bs-placement="bottom" title="{{$page->page_tooltip}}">
<a href="{{URL::to('/')}}/{{$page->page_url_slug}}">
<img src="{{URL::to('/')}}/assets/img/{{$page->page_img}}"
class="card-img-top dashboard-thumbnail mx-auto d-block" alt="{{$page->page_title}}">
<div class="card-body mb-3">
<h4 class="card-text">{{$page->page_title}}</h4>
</div>
</a>
</div>
@stop
<?php $i++; ?>
<?php } ?>失败点是试图动态地指定节名指令,因此@section('card-{{$i}}')失败,而如果我硬编码@section('card-2'),则卡片呈现,但当然只有一个呈现,因为card-2节内容只是被覆盖。
解决这个问题的方法是什么?
发布于 2022-09-26 19:50:43
我想出了这个办法。这不是最优雅的解决方案,但它可以完成jon的任务,是一个很好的临时解决方案,直到我找到更好的解决方案(如user @Peppermintology所建议的那样,可能使用组件或插槽)。
<?php foreach($pages as $page) { ?>
<?php if($i == 1) { ?> @section('card-1') <?php } ?>
<?php if($i == 2) { ?> @section('card-2') <?php } ?>
<?php if($i == 3) { ?> @section('card-3') <?php } ?>
<?php if($i == 4) { ?> @section('card-4') <?php } ?>
<?php if($i == 5) { ?> @section('card-5') <?php } ?>
<?php if($i == 6) { ?> @section('card-6') <?php } ?>
<?php if($i == 7) { ?> @section('card-7') <?php } ?>
<?php if($i == 8) { ?> @section('card-8') <?php } ?>
<?php if($i == 9) { ?> @section('card-9') <?php } ?>
<div id="{{$page->page_name}}" class="" title=""></div>
<div class="card" data-bs-toggle="tooltip" data-bs-html="true" data-bs-placement="bottom" title="{{$page->page_tooltip}}">
<a href="{{URL::to('/')}}/{{$page->page_url_slug}}">
<img src="{{URL::to('/')}}/assets/img/{{$page->page_img}}"
class="card-img-top dashboard-thumbnail mx-auto d-block" alt="{{$page->page_title}}">
<div class="card-body mb-3">
<h4 class="card-text">{{$page->page_title}}</h4>
</div>
</a>
</div>
@stop
<?php $i++; ?>
<?php } ?>我正在检查增量器计数,然后显示与其相关的节名。我将增加到9页,因为这是每个仪表板的最大页数。
https://stackoverflow.com/questions/73858727
复制相似问题