所以基本上这就是我需要的。我有这样的路由器定义。
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')
数组和相应的控制器操作
如果您需要进一步澄清,我肯定会这样做。请给我你的建议。
答案 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);
}