Laravel路由,使用参数重定向

时间:2018-12-27 09:55:51

标签: laravel routing routes

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

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

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

现在,“解剖”部分已重命名为“ physio”,并且相同内容的新URL是这样:

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

这是格式为physio/{id}/{slug}

的GET路由

现在,我想提供向后兼容性(对于所有可能已将旧的URL格式添加为书签的用户)。

因此,我尝试将anatomy/18917/why-cant-i-bend-my-back重定向到physio/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('/');
});

2 个答案:

答案 0 :(得分:3)

更改

$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

答案 1 :(得分:0)

控制器内部

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