Laravel - 路由模式不能多次引用变量名称

时间:2017-06-27 07:45:56

标签: php laravel routes

我正在研究一个遗留代码,一个用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');
    });
});

不确定,为什么我收到此错误?

2 个答案:

答案 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']});