【问题标题】:Laravel Blade Template With Breadcrumbs带有面包屑的 Laravel 刀片模板
【发布时间】:2018-12-18 16:08:28
【问题描述】:

我有一个模板admin.blade.php,其中包含以下代码:

@yield('breadcrumbs', Breadcrumbs::render(Request::route()->getName()))

在我的子文件中,我要么忽略面包屑,要么我想做类似的事情:

@section('breadcrumbs')
    {{ Breadcrumbs::render(Request::route()->getName(), $event) }}
@endsection

问题是默认的 yield 内容似乎仍在被触发,当函数被调用时我得到一个错误。

函数参数太少 DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider::{closure}(), 1 传入 C:\xampp\htdocs\msu\vendor\davejamesmiller\laravel-breadcrumbs\src\BreadcrumbsGenerator.php 在第 68 行,预计正好 2 行(查看: C:\xampp\htdocs\msu\resources\views\event\station\edit.blade.php)

我明白了,所以我的问题是如何在刀片中实现我想要做的事情?

我也尝试过 @section @show 和 section @stop 但这似乎只是隐藏了这些部分并给了我同样的错误。

非常感谢任何帮助。

【问题讨论】:

  • 你确定{{ Breadcrumbs::render(Request::route()->getName(), $event) }} 正在返回一些东西吗?
  • 我在子刀片中有该代码,有时它确实或会返回一些东西。问题是在此之前,当 $event 存在时,默认内容仍会调用 render 并引发错误。我希望它更像一个 if 语句。如果 $event = null 使用默认内容。否则,使用子部分。 (例如)
  • 您不能在您的子视图中执行@if ($event != null) @section('breadcrumbs') ... @endif 之类的操作吗?
  • 嗯,$event 只是一个例子。这个变量几乎可以是任何东西。我不想为每种情况编写一个 if 语句检查。

标签: php laravel laravel-blade


【解决方案1】:

您可以创建一个组件来处理您需要的 if 情况:

<!-- resources/views/breadcrumb.blade.php -->

@if (isset($slot) && !is_null($slot))
    @section ('breadcrumbs')
        {{ Breadcrumbs::render(Request::route()->getName(), $slot) }}
    @endsection
@endif

然后在您的子视图中,您可以调用您的组件:

<!-- resources/views/child.blade.php -->

@component('breadcrumb', ['slot' => $event]) @endcomponent

您可以将组件中的变量名称更新为您喜欢的任何名称。

有关组件的更多信息:https://laravel.com/docs/5.6/blade#components-and-slots

【讨论】:

  • 我明白你现在的意思了。我认为这会奏效。谢谢!
猜你喜欢
  • 2013-04-29
  • 2017-04-03
  • 2018-05-31
  • 2018-12-21
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多