与模型绑定有问题-Laravel面包屑

与模型绑定有问题-Laravel面包屑,laravel,model,bind,breadcrumbs,Laravel,Model,Bind,Breadcrumbs,davejamesmiller/laravel面包屑上的模型绑定有问题。 我会尽量简短,但如果您需要更多数据,请询问=D 这是我的控制器/操作签名: public function edit(Request $request, Vertical $vertical, UserMacro $macro) 这是我对应路线的BC: Breadcrumbs::register('macro-edit', function (Generator $breadcrumbs, $vertical, $mac

davejamesmiller/laravel面包屑上的模型绑定有问题。 我会尽量简短,但如果您需要更多数据,请询问=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上中断。如果在操作中添加提示,则会出现
类型错误

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',函数($trail\App\Models\MassMessage$MassMessage){
$trail->parent('Index');
$trail->push('Show',route('messages.Show',$massMessage));
});
路由::get('messages/{massMessage}','MessageController@show')->name('messages.show');
//错误(控制器正常)
路由::get('mass-mmessage/{massMessage}','MessageController@show')->name('messages.show');
//两者都起作用
资源路由也存在同样的问题

编辑:


我错了。控制器也不工作。它不会引起错误,但会传递有说服力的对象。在我的例子中,我需要将
$massMessage
变量的名称在两个位置都更改为
$message
,现在可以正常工作了。

您是否在模型上设置了
$primaryKey
属性,并将
$incrementing
设置为false?不这样做可能会阻止Laravel将字符串解析为
Vertical
,因为该操作表示正确加载的模型。我的问题只是面包屑{closure}接收字符串(id)