【问题标题】:Having trouble with Model Bind - Laravel Breadcrumbs模型绑定有问题 - Laravel Breadcrumbs
【发布时间】:2018-01-31 13:47:03
【问题描述】:

在 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)

【问题讨论】:

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

标签: laravel model bind breadcrumbs


【解决方案1】:

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

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

资源路由也有同样的问题。

编辑:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2011-12-22
    • 2019-09-05
    • 1970-01-01
    相关资源
    最近更新 更多