首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel指令中使用变量

在Laravel指令中使用变量
EN

Stack Overflow用户
提问于 2022-09-26 18:57:21
回答 1查看 61关注 0票数 0

这是一个关于在Laravel刀片指令中使用变量的问题。我有一个有各种仪表板的网站。每个仪表板都有一个登陆页,显示每个子页面的卡片。

我有一个登陆页刀片模板,其中包含以下代码:

代码语言:javascript
复制
    <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模型,只选择可见的卡片,然后循环遍历收集来创建卡片。测试后,除使用计数器变量动态设置节名外,每个位都可以工作。

例如,下面是登陆页面刀片中的一些内容:

代码语言:javascript
复制
<?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节内容只是被覆盖。

解决这个问题的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-26 19:50:43

我想出了这个办法。这不是最优雅的解决方案,但它可以完成jon的任务,是一个很好的临时解决方案,直到我找到更好的解决方案(如user @Peppermintology所建议的那样,可能使用组件或插槽)。

代码语言:javascript
复制
<?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页,因为这是每个仪表板的最大页数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73858727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档