创建动态 URL 并在 Laravel 中重定向到它

Create a Dynamic URL and Redirect to it in Laravel

所以基本上这就是我需要的。我有一个这样的路由器定义。

Route::get('view/{postId}', 'PostController@view');

如果我们请求的 url 是 www.domain.com/view/4,上面的路由器定义将被触发。但我想要的是我想让这个 url 像 www.domain.com/[category-of-post]/[titile-of-post] 一样出现(例如:www.domain.com/music/easy-chords-in-guitar)。

PostController 中,我将使用传递的 id 获取 post,从而可以生成我需要的 url。这是问题的开始。如您所见,我需要重定向到动态 url,每个 post 看起来都不同。 我想重定向到这个动态 url,但是这些 url 没有在 routes.php.

中定义

这在 Laravel 中可行吗?

简而言之,我需要的是,我想在调用 运行 之前用动态生成的 url 值和相应的控制器操作更新 Illuminate\Routing\RouteCollection::$route 数组 Redirect::to('someurl')

如果您需要进一步说明,我一定会做到。请给我你的建议。

它比你想象的要简单。

Route::get('{category}/{title}',['uses' => 'FooController@bar']);

这应该是您的路由列表中定义的最后一条路由。任何其他路线都应该比这条路线更高。

这将匹配 www.domain.com/music/easy-chords-in-guitar

休息路线随心所欲。

例如

Route::get('/',['uses' => 'FooController@home']);
Route::get('about',['uses' => 'FooController@about']);
Route::get('contact',['uses' => 'FooController@contact']);

Route::get('{category}/{title}',['uses' => 'FooController@bar']);

路线:

    Route::get('action/{slug}', 'HomeController@actionredeemvoucher')->name('home.actionredeemvoucher');

控制器中的函数:

    public function actionredeemvoucher($slug)
    {    
       print_r($slug);  
    }