【问题标题】:Laravel routing, redirect with parametersLaravel 路由,带参数重定向
【发布时间】:2018-12-27 18:08:38
【问题描述】:

我知道有类似的问题,但那里提供的答案对我不起作用。

我的 Laravel 应用程序中有以下 URL:

http://example.com/anatomy/18917/why-cant-i-bend-my-back

现在“解剖”部分已重命名为“生理”,相同内容的新网址如下:

http://example.com/physio/18917/why-cant-i-bend-my-back

这是一个格式为physio/{id}/{slug}的GET路由

现在,我想提供向后兼容性(适用于任何可能以旧 URL 格式为文章添加书签的用户)。

所以我尝试重定向,例如,anatomy/18917/why-cant-i-bend-my-backphysio/18917/why-cant-i-bend-my-back。我尝试了以下方法,但它不起作用:

$router->get('anatomy/{id}/{slug}', function() {
    return redirect()->to('physio', ['id' => $id, 'slug' => $slug]);
});

我得到的错误是undefined variable: id。如果我执行以下操作,它会正确重定向到主页,但我宁愿使用给定参数重定向到实际文章。

$router->get('anatomy/{id}/{slug}', function() {
    return redirect()->to('/');
});

【问题讨论】:

    标签: laravel routing routes


    【解决方案1】:

    改变

    $router->get('anatomy/{id}/{slug}', function() {
        return redirect()->to('physio', ['id' => $id, 'slug' => $slug]);
    });
    

    $router->get('anatomy/{id}/{slug}', function($id,$slug) {
        return redirect()->to('physio', ['id' => $id, 'slug' => $slug]);
    });
    

    您需要在函数中传递$id$slug

    source

    【讨论】:

    • 当我这样做时,我得到The HTTP status code "1" is not valid
    • 设置physio/id/slug路由的路由名称。你的新路线。然后使用return redirect()->route('routename', ['id' => $id, 'slug' => $slug])
    • 我认为如果@jovan 可以为旧路线命名,那么您可以使用redirect()->route(...) 否则您可以通过自己构建网址来节省时间。即redirect()->to("pysio/$id/$slug") //注意双引号
    • 是的@OluwatobiSamuelOmisakin
    【解决方案2】:

    控制器内部

    function($id,$slug) {
        return redirect()->to('physio', ['id' => $id, 'slug' => $slug]);
    };
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2017-12-30
      • 2014-06-10
      • 2020-04-22
      • 1970-01-01
      • 2016-04-07
      • 2020-03-24
      • 2015-11-07
      • 2015-11-06
      相关资源
      最近更新 更多