我对 Laravel 路线有一个问题。
我有一个函数 index($sport = '', $date = '');
此函数向我显示特定运动和日期的新闻。但有时这些参数没有输入,我想显示所有新闻。这工作得很好很好,问题出在路线上。
这是我使用过的路线代码:
Route::get('/news/{sport?}/{date?}.html', ['as' => 'news.index', 'uses' => 'NewsController@index']);
当没有输入运动项目和日期,URL 是domain.com/news.html,但没有被该代码捕获时,就会出现问题。我怎样才能做到这一点?
最佳答案
如果您将新闻
和体育
视为资源,您可能会拥有类似的内容:
// index case news
Route::get('/news.html', ['as' => 'news.index', 'uses' => 'NewsController@index']);
// show case news
Route::get('/news/{date}.html', ['as' => 'news.show', 'uses' => 'NewsController@show']);
// index case sport
Route::get('/news/sport.html', ['as' => 'sport.index', 'uses' => 'SportController@index']);
// show case sport
Route::get('/news/sport/{date}.html', ['as' => 'sport.show', 'uses' => 'SportController@show']);
另一种方法是:
// index case news
Route::get('/news.html', ['as' => 'news.index', 'uses' => 'NewsController@index']);
// sport case
Route::get('/news/{sport}.html' , ['as' => 'sport.index', 'uses' => 'SportController@index'])
->where(['sport' => '[0-9]+']);
// date case
Route::get('/news/{date}.html', ['as' => 'news.show', 'uses' => 'NewsController@show'])
->where(['date' => '[0-9]{4}-[0-9]{1,}-[0-9]{1,}']);
// sport and date case
Route::get('/news/{sport}/{date}.html' , ['as' => 'sport.index', 'uses' => 'SportController@show'])
->where(['sport' => '[0-9]+', 'date' => '[0-9]{4}-[0-9]{1,}-[0-9]{1,}']);
关于php - Laravel 路由可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40781721/