【问题标题】:Laravel 5.6. Route model bindung拉拉维尔 5.6。路由模型绑定
【发布时间】:2019-01-01 23:25:45
【问题描述】:

你好我正在尝试创建自己的 laravel 包它有两个控制器资源,它们有单个控制器和模型 Post

    Route::resource('posts', \vendor\package\Controllers\PostsController::class);
    Route::resource('categories', \vendor\package\Controllers\PostsController::class);

我在PostsController中的方法是show(Post $post)

如果我打开链接http://localhost/posts/1$post 的属性元素在show 方法中不为空。

但是当我打开链接http://localhost/categories/1时,$post的属性元素是空的。

如何获取 resource categories 的 Post 数据?

附:帖子和类别之间的区别是数据库中post_type 列的值。

【问题讨论】:

    标签: php laravel laravel-5 laravel-routing laravel-resource


    【解决方案1】:

    Route::model('categories', App\Post::class); 添加到您的boot() 方法中

    ./app/Providers/RouteServiceProvider.php

    source

    【讨论】:

    • 首先我需要在自定义包中制作它。但即使我插入到RouteServiceProvider 也不起作用
    • 你能分享一下你的RouteServiceProvider现在的样子吗?
    • 你能在PostsControllerdd($post) 方法中添加dd($post) 吗?然后打开http://localhost/posts/1http://localhost/categories/1,你能截图吗?
    • 我已经注意到connection: null 用于类别
    【解决方案2】:

    您可以定义在使用资源路由时为生成的路由命名的路由参数。

    这应该是您需要进行的唯一更改:

    Route::resource(
        'categories', 
        \vendor\package\Controllers\PostsController::class,
        ['parameters' => ['categories' => 'post']]
    );
    

    现在路由参数是post

    GET categories/{post}
    GET categories/{post}/edit
    ...
    

    Laravel 5.6 Docs - Controllers - Naming Resource Route Parameters

    【讨论】:

    • 看起来很有效 :) 。谢谢。我之前尝试过通过maethod parameters()设置这个参数,但没有成功
    猜你喜欢
    • 2019-09-09
    • 2017-03-16
    • 2019-05-26
    • 2023-03-29
    • 2018-12-17
    • 1970-01-01
    • 2018-12-17
    • 2018-10-16
    • 2018-11-01
    相关资源
    最近更新 更多