【问题标题】:Laravel how to generate urls using GET route names?Laravel 如何使用 GET 路由名称生成 url?
【发布时间】:2019-05-02 02:55:10
【问题描述】:

我的路线文件(网络)中有这 2 条路线

    Route::get('management/special-fees/add/{userId}', 'Management\SpecialFeeController@create')->name('management/special-fees/add');
    Route::post('management/special-fees/add', 'Management\SpecialFeeController@store')->name('management/special-fees/add');

它们都具有相同的名称,但一个是 GET,另一个是 POST,到目前为止一切都很好。但是现在我想在我的视图中创建一个 url 来打开表单,为此我使用了这样的方法 route()

route('management/special-fees/add',$user->id )

但是当我试图去这个网址时,我得到了这条路线

.../management/special-fees/add?5

有一个问号而不是“/”所以路由是无效的。

我做了一些测试,我发现这是因为如果我像这样在 web 文件中更改 POST 路由的 url,我会尝试转到 POST 路由而不是 GET 路由

Route::get('management/special-fees/add/{userId}', 'Management\SpecialFeeController@create')->name('management/special-fees/add');
Route::post('management/special-fees/addSSSS', 'Management\SpecialFeeController@store')->name('management/special-fees/add');

事实上我会得到这个网址

.../management/special-fees/addSSSS?5

那么为什么 route() 方法会通过 GET 方法为 POST 路由生成 url?怎样才能先选择GET路由?

【问题讨论】:

  • 代替 .../management/special-fees/add?5 使用 .../management/special-fees/add/5

标签: php laravel routing


【解决方案1】:

在 laravel 中,路由的优先级是按照它在 route.php 文件中写入的顺序排列的。

在这种情况下,你最后写的是 Route::post,这反过来告诉 Laravel 那个应该有最高优先级。尝试切换它们,Route::get 将具有更高的优先级。

像这样:

Route::post('management/special-fees/addSSSS', 'Management\SpecialFeeController@store')->name('management/special-fees/add');
Route::get('management/special-fees/add/{userId}', 'Management\SpecialFeeController@create')->name('management/special-fees/add');

【讨论】:

    【解决方案2】:

    我可能错了,但我认为您必须重新考虑路线命名。路由命名有助于消除的问题之一是冗余和复杂的名称。例如,如果您查看 Route::resource('something', 'SomethingController') 的 route:list,它将有 something.indexsomething.store 作为 Route::get('something')Route::post('something') 的路由名称。

    如果它是同名的,它总是会解析到第一个并且可能永远不会到达第二个路由;在您的情况下,将访问 POST 路由,而不是 GET 路由。

    【讨论】:

      【解决方案3】:

      ?5 表示 5 是您获取路线的参数。 试试这个

      url('management/special-fees/add/'.$user->id)

      用于获取路由

      route('management/special-fees/add',$user->id )

      【讨论】:

        猜你喜欢
        • 2017-04-01
        • 2018-05-16
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2016-11-29
        • 2016-06-15
        • 1970-01-01
        • 2019-07-23
        相关资源
        最近更新 更多