【问题标题】:Laravel breadcrumbs with 2 parameters带有 2 个参数的 Laravel 面包屑
【发布时间】:2018-05-09 19:52:03
【问题描述】:

我有一个依赖于 2 个参数的路线:

Route::get('{place}/{treatment}', 'ClinicController@showResults')->name('clinic.search.results');

我想将此结果的面包屑显示为:

Home -> {Place} -> {Treatment}

但最好不要将“地点”链接到任何东西,因为我没有设置仅处理“地点”的路线。它返回 404。

我在breadcrumbs.php 中设置为:

Breadcrumbs::register('clinic.search.results', function ($breadcrumbs, $place, $treatment) {
    $breadcrumbs->parent('location', $place);
    $breadcrumbs->push($treatment, route('clinic.search.results', $place, $treatment));
});

但是抛出异常:

类型错误:函数的参数太少 DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider::{closure}(), 1 传入 /home/vagrant/compare/vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsGenerator.php 在第 68 行,预计正好 3 行(查看: /home/vagrant/resources/views/clinic/search/results.blade.php)

请问我错过了什么?提前谢谢你。

【问题讨论】:

  • 你能分享一下breadcrumbs.php的内容吗?
  • 也可以使用php代码生成动态面包屑here

标签: php laravel breadcrumbs laravel-5.5


【解决方案1】:

我认为问题应该是 {Place} -> {Treatment} 是另一个级别,也许你应该检查route() helper

首先您应该定义 {Place} - 设置为父级并推送,然后定义 {Treatment} 设置父级 {Place} 并推送 {Treatment}

请检查您的route() 助手,第一个参数是字符串形式的路由名称,第二个参数是数组形式的参数。所以route('clinic.search.results', ['place' => $place, 'treatment' => $treatment])

请查看bradcrumbs 包documentation

在 L5.5 中,路由助手是这样定义的

if (! function_exists('route')) {
    /**
     * Generate the URL to a named route.
     *
     * @param  string  $name
     * @param  array   $parameters
     * @param  bool    $absolute
     * @return string
     */
    function route($name, $parameters = [], $absolute = true)
    {
        return app('url')->route($name, $parameters, $absolute);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多