【问题标题】:Laravel - Route pattern cannot reference variable name more than onceLaravel - 路由模式不能多次引用变量名
【发布时间】:2017-11-30 04:27:21
【问题描述】:

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

不确定,为什么会出现此错误?

【问题讨论】:

    标签: php laravel routes


    【解决方案1】:

    你只需要像这样重命名你的路由参数:

    Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
    => ['{term}' => 'your_name']]);
    

    小心!!!!你需要插入支架。这将导致错误的结果:

    Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
    => ['term' => 'your_name']] );
    

    注意: 'your_name' 不应与您的参数相同,因此此方法会出错 结果。

    Route::resource('taxonomy/{term}','TaxonomyController', ['parameters'
        => ['{term}' => 'term']});
    

    【讨论】:

    • 我收到Unresolvable dependency resolving [Parameter #0 [ <required> $id ]] in class App\Http\Controllers\ProjectsController 类似的情况:web.php (pastebin.com/Y7P1jqZ1) 和 ProjectsController (pastebin.com/A8ULNRd8)。可以告诉我吗?
    • 在你的控制器 __construct 方法中你不能使用 $id。测试一下:Route::resource( 'projects/{project}', 'ProjectsController', [ 'parameters' => [ '{project}'=>'id', ], ] );@maan81
    【解决方案2】:

    当您将路由定义为资源时,Laravel 似乎会为您的资源创建所有必需的路由:GET、POST、PATCH、DELETE。

    所以你只需要定义Route::resource('taxonomy','TaxonomyController');Route::resource('taxonomy.post','TaxonomyPostController');

    查看docs

    【讨论】:

    • 是的,每晚睡前。
    • 当 Laravel 不仅仅是一个框架,更是一种宗教:))
    • 你是对的,但你应该在答案中解释这类事情,而不是在评论的答案中......我的意思是,如果值得从链接中提取信息来回答一个厚脸皮评论,提取它以回答合法答案是双重价值。是的,Laravel 是一种宗教,而 Taylor Otwell 是它的先知 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2015-03-05
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多