【问题标题】:Controller Method Not Found Strange Behaviour找不到控制器方法奇怪的行为
【发布时间】:2016-04-02 20:02:52
【问题描述】:

我的 laravel 应用程序中有一个 AuthController,在该控制器内我有几种方法:

public function postLogin(LoginRequest $request)
{
  ...
}

public function getRegister()
{
  ...
}

public function postRegister(RegisterRequest $request)
{
  ...
}

由于某种原因,现在我的 postRegister() 函数不起作用,当我出于某种原因在邮递员中运行它时,它总是执行 getRegister(),而当我取出 getRegister() 时,它说找不到控制器方法。

这是我的路线:

Route::group(['prefix' => '/api/v1/', 'namespace' => 'App\Http\Auth\Controllers'], function() {
    /**
     * Authentication
     */
    Route::controllers([
        'auth' => 'AuthController',
        'password' => 'PasswordController',
    ]);
});

编辑:我已将问题缩小到我的请求文件,路径是正确的,但由于某种原因,当我尝试在 postRegister(RegisterRequest $request) 中使用它时,postRegister 函数没有被执行,没有错误被抛出,它以前工作过,现在我不知道是什么导致了这个问题。

我想我还应该补充一点,我创建了我在我的应用程序中使用的自定义命名空间。

【问题讨论】:

    标签: laravel routes laravel-5 request-validation


    【解决方案1】:

    确保在 Postman 中您将 HTTP 方法设置为“POST”,您可能使用的是“GET”,它访问的是“get”路由而不是“post”路由。

    您可以发送php artisan route:list 来查看您的实际路由以及它们接受的 HTTP 方法。

    【讨论】:

    • 不,我绝对在使用 POST,我什至在邮递员中测试它的原因是因为它在我的应用程序中不起作用。除非邮递员在我选择 POST 时偷偷使用 GET。
    • 你在哪个网址发帖?
    • 它在我的本地主机上。
    • 是的,你想在本地主机上发布什么网址?
    • 但是,当我取出 RegisterRequest $request 时它可以工作,它实际上指向 postRegister() 但是当我把它放回去时它指向 getRegister()。
    【解决方案2】:

    经过数小时的搜索和更改代码后,我在这里找到了解决方案: laracasts.com/discuss/channels/laravel/laravel-5-custom-request-not-working

    显然,在 laravel 中使用 postman 测试您的 API 时,您需要将 AcceptHeader 设置为 Application/json。我不知道这个。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 2020-03-31
      • 2015-11-07
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多