我正在将我网站的论坛部分迁移到Laravel 4.我自己管理分页。 (不是Laravel内置的)
我的网址目前使用以下格式:
example.com/forum
example.com/forum/page-1
我希望在迁移后保持这样。
我的路线看起来像这样:
Route::get('/forum/page-{page?}',
array('uses' => 'ForumController@showForum', 'as' => 'forum'));
但是当我请求没有页码的页面时,它当然不起作用。
我可以像/forum/{pagetext?}-{page?}
那样做,但我不想在我的Controller中捕获pagetext参数,并且我只想在使用URL :: route为页面构建URL时给出$ page参数()。
我在互联网上找到了很多例子,但总是有多个参数,没有静态的可选文本。
如何使这个“静态”部分也可选?
我正在考虑使用正则表达式中的可选组,例如/forum/(page-{page})?
但是如何在Laravel中执行此操作?
答案 0 :(得分:1)
如果你真的需要参数是可选的,我会将该路由的整个段作为一个参数,你可以使用正则表达式来强制执行它:
Route::get('/forum/{page?}', function($page = null) {
echo 'On page ' . $page;
})->where('page', 'page-[\d]+');
此处的缺点是您必须从路线中获取数字页码。
正如@Jarek在评论中提到的,你也可以把它分成两个不同的路线:
Route::get('/forum', function() {
echo 'Forum Index';
});
Route::get('/forum/page-{page}', function($page) {
echo 'On page ' . $page;
})->where('page', '[\d]+');