代码之家  ›  专栏  ›  技术社区  ›  Md. Robi Ullah

如何在laravel中使用路由名传递查询参数?

  •  0
  • Md. Robi Ullah  · 技术社区  · 6 年前

    我认识这个

    {{route('editApplication', ['id' => $application->id])}} == /application/edit/{id}
    

    但我需要

    ?? == /application/edit?appId=id
    

    任何人,请把“?“你的回答帮助了我。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Marcin Nabiałek    6 年前

    这取决于你的路线是什么样子的:

    如果您的路线是:

    Route::get('/application/edit/{id}', 'SomeController')->name('editApplication');
    

    当你使用

    route('editApplication', ['id' => 5])
    

    网址如下:

    /application/edit/5
    

    但是,所有其他参数(不在路由参数中)将用作查询字符串,例如:

    route('editApplication', ['id' => 5, 'first' => 'foo', 'second' => 'bar'])
    

    将生成如下url:

    /application/edit/5?first=foo&second=bar
    

    如果你想实现这样的url

    /application/edit?appId=id
    

    您应该这样定义路由:

    Route::get('/application/edit/', 'SomeController')->name('editApplication');
    

    然后当你使用

    route('editApplication', ['appId' => 5])
    

    你会得到

    /application/edit?appId=5
    

    网址。

        2
  •  1
  •   Pusparaj    6 年前

    route 方法接受任何变量集,并将其作为查询字符串,除非变量名与定义的路由签名匹配。

    因此,对于您的情况,您可以执行以下操作:

    route('editApplication', ['appId' => <your id here>])
    

    可以为数组提供任意数量的变量。

        3
  •  0
  •   Anıl Şenocak    6 年前

    您需要在没有参数选项的情况下修改“editApplication”路由。如果您仍然需要参数,只需在控制器中添加以下行,然后使用捕获数据;

    $appId = $request->input('appId');
    
    推荐文章