【问题标题】:How to add additional parameter to resource route in laravel如何在 laravel 中向资源路由添加附加参数
【发布时间】:2018-04-08 15:33:15
【问题描述】:

有没有办法给 laravel 资源路由添加额外的参数,让 url 看起来像 www.blog.com/blogpost/1www.blog.com/blogpost/1-my-first-blog

blog/{id}blog/{id}-{title}

我知道类似blog/{id}/{title}的基本路由参数

【问题讨论】:

  • 点赞:Route::resource('blogpost', 'BlogpostController', ['parameters' => [ 'blogpost' => 'whatever' ]]); 转换为/blogpost/{whatever}

标签: php laravel parameters controller routes


【解决方案1】:

希望能帮到你

在您的路线文件中:

Route::get('blog/{slug}', 'BlogController@show'); // make sure not conflict with resource routes define

然后是你的BlogController

 public function show($slug)
    {
        $id = explode($slug, '-')[0]; //get id of post

        // your logic
    }

【讨论】:

  • OP 使用ResourceController 和资源路由!你有正确阅读问题吗??
  • @HirenGohel 我认为我们需要定义新的路由来处理新的 url 格式,比如www.blog.com/blogpost/1-my-first-blog。我阅读了您的评论,但我认为它只会更改参数的名称。不改变网址格式!
  • 您能否在文档中查看Naming Resource Route Parameters 主题:laravel.com/docs/5.5/controllers#resource-controllers
  • 另外 OP 在他的问题中定义这个 Is there any way to add additional parameters to laravel resource route 所以我认为这不是答案!
  • 你能解释一下我们如何处理格式从blog/{id}blog/{id}-{title}的url吗?谢谢
【解决方案2】:
composer require cviebrock/eloquent-sluggable:^4.3

安装和配置这个包然后你可以简单地做findBySlug($slug)。但是你不能通过资源路由来实现这一点。

更多关于 laravel sluggable 的信息可以在here找到

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2021-01-05
    • 2014-10-08
    • 2014-02-18
    • 2010-12-16
    • 2016-08-16
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多