在davejamesmiller / laravel-breadcrumbs上遇到模型绑定问题。
我会尽量简短,但是如果您需要更多数据,请询问= D
这是我的控制器/动作签名:

public function edit(Request $request, Vertical $vertical, UserMacro $macro)


这是我对应路线的BC:

Breadcrumbs::register('macro-edit', function (Generator $breadcrumbs, $vertical, $macro) {
    $breadcrumbs->parent('macro-index');
    $breadcrumbs->push($macro->name, route('macro-edit', [$vertical->_id, $macro]));
});


我在$ vertical和$ macro上得到了字符串ID,在$ macro-> name上断开了。如果我将提示添加为动作,则会得到一个Type error

Trying to get property of non-object (View: /.../resources/views/layouts/app.blade.php) (View: /.../resources/views/layouts/app.blade.php)


Type error: Argument 2 passed to DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider::{closure}() must be an instance of App\Vertical, string given, called in /.../vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsGenerator.php on line 68 (View: /.../resources/views/layouts/app.blade.php) (View: /.../resources/views/layouts/app.blade.php)

最佳答案

我没有分析库的核心代码,所以我不知道为什么控制器起作用,但是面包屑却不起作用。与工作模型绑定的配方使用正确的路由命名约定。

Breadcrumbs::for('messages.show', function($trail, \App\Models\MassMessage $massMessage) {
    $trail->parent('Index');
    $trail->push('Show', route('messages.show', $massMessage));
});

Route::get('messages/{massMessage}', 'MessageController@show')->name('messages.show');
// error (controllers are fine)


Route::get('mass-mmessages/{massMessage}', 'MessageController@show')->name('messages.show');
 // works both


同样的问题是资源路由。

编辑:

我错了。控制器也不起作用。它不会引发错误,但是会传递空的Eloquent对象。就我而言,我需要在两个地方都将$massMessage变量的名称更改为$message,并且现在可以正常工作。

08-25 20:46