php - Laravel 路由可选参数

标签 php laravel routes

我对 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/

相关文章:

php - mysql 查询在 php 中按日期条件过滤特定行?

php - 创建 CSV 上传到 Mysql

ruby-on-rails - Ruby on Rails 路由问题

php - Laravel - 在非对象上调用成员函数 paginate()

python - 使用 Tornado 框架在 Python 中进行正则表达式路由

flutter - 在我的 flutter 应用程序中分离不同模块的路由的最佳方法是什么

javascript - 用于 php 脚本的 AJAX

php - 结果数组中是否有使用列 (PK) 作为索引的 "mysqli_fetch_all"?

php - 如何从事件 View Laravel 生成 PDF

php - 多层评论系统 Laravel