我正在研究一个遗留代码,一个用Laravel 5.2构建的项目,我收到一个错误:
Route pattern "/api/v0/taxonomy/{term}/{{term}}" cannot reference variable name "term" more than once.
对于这条路线:
/post/106
这是我的路线:
Route::group(['prefix' => 'api'], function() {
Route::group(['prefix' => 'v0'], function () {
Route::get('route/{a?}/{b?}/{c?}/{d?}', 'DynamicRouteController@resolve');
Route::get('id/{id}', 'DynamicRouteController@resolveId');
Route::get('search', 'SearchController@search');
Route::resource('taxonomy/{term}','TaxonomyController');
});
});
不确定,为什么我收到此错误?
答案 0 :(得分:6)
当您将路由定义为资源时,Laravel似乎会创建资源所需的所有路由:GET,POST,PATCH,DELETE。
因此您只需要定义Route::resource('taxonomy','TaxonomyController');
或Route::resource('taxonomy.post','TaxonomyPostController');
检查docs
答案 1 :(得分:0)
enter code here
您只需要重命名您的路线参数:
Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
=> ['{term}' => 'your_name']});
becareful !!!!。你需要插入支架。这会产生错误的结果:
Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
=> ['term' => 'your_name']});
注意: 'your_name'不应与您的参数相同,因此此方法出错 结果
Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
=> ['{term}' => 'term']});