代码之家  ›  专栏  ›  技术社区  ›  Jakub Muda

具有可变前缀和where条件的Laravel路由组

  •  1
  • Jakub Muda  · 技术社区  · 3 年前

    我想在Laravel中创建一个以变量作为前缀的路由组。我也需要设定一些条件。如何做好这件事?

    我在看以下文件: https://laravel.com/docs/8.x/routing#route-group-prefixes 但只有一般性的例子。

    此代码应创建两条路线: /{hl}/test-1 /{hl}/test-2 {hl} (en|pl) ,但它给出了一个错误: "Call to a member function where() on null"

    Route::prefix('/{hl}')->group(function ($hl) {
    
        Route::get('/test-1', function () {
            return 'OK-1';
        });
    
        Route::get('/test-2', function () {
            return 'OK-2';
        });
    
    })->where('hl','(en|pl)');
    
    2 回复  |  直到 3 年前
        1
  •  2
  •   lagbox    3 年前

    这个 group 调用不会返回任何内容,因此没有可链接的内容。如果你成功了 where 打电话之前先打电话给 ,与您的呼叫方式类似 prefix ,它将在您调用时建立这些属性 它会将其级联到组中的路由上:

    Route::prefix('{hl}')->where(['h1' => '(en|pl)'])->group(function () {
        Route::get('test-1', function () {
            return 'OK-1';
        });
    
        Route::get('test-2', function () {
            return 'OK-2';
        });
    });
    
        2
  •  0
  •   Gleb Kemarsky    3 年前

    比照 this answer :

    Route::group([
        'prefix' => '{hl}',
        'where' => ['hl' => '(en|pl)']
    ], function ($hl) {
        Route::get('/test-1', function () {
            return 'OK-1';
        });
        Route::get('/test-2', function () {
            return 'OK-2';
        });
    });
    

    这能解决你的问题吗?