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

时间:2015-03-04 06:13:16

标签: php laravel laravel-4 laravel-routing

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

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

如果我们请求的网址为www.domain.com/view/4,则会触发上面的路由器定义。但我想要的是我希望将此网址显示为www.domain.com/[category-of-post]/[titile-of-post](例如:www.domain.com/music/easy-chords-in-guitar)。

PostController中,我将使用传递的ID获取帖子,因此可以生成我需要的URL。这是问题的开始。正如您所看到的,我需要重定向到动态网址,每个帖子的外观都不同。 我想重定向到此动态网址,但这些网址未在routes.php 中定义。

Laravel有可能吗?

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

如果您需要进一步澄清,我肯定会这样做。请给我你的建议。

2 个答案:

答案 0 :(得分:1)

它比你想象的要简单。

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

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

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

休息路线根据需要定义。

e.g。

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

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

答案 1 :(得分:0)

路线:

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

控制器中的功能

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