【问题标题】:Bad path to API controller in LaravelLaravel 中 API 控制器的错误路径
【发布时间】:2019-10-06 22:09:35
【问题描述】:

我有一个这样的 Laravel 结构:

app/
   Http/
       Controllers/
          Api/
          Auth/
              RegisterController

API 路由:

 // AUTH
   Route::namespace('Api')->group(function () {
     Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
     Route::post('password/reset', 'Auth\ResetPasswordController@reset');
     Route::post('register', 'Auth\RegisterController@register');
});

但是对 http://domain.xx/api/register 的 POST 请求返回一个内部错误:

类 App\Http\Controllers\Api\Auth\RegisterController 不存在 在文件中...

我尝试指向 '..\Auth\RegisterController@register' 但我得到了同样的错误:

类 ..\Auth\RegisterController 在文件中不存在

修复应该很简单,哈哈……但是……你能帮帮我吗?

【问题讨论】:

  • 根据您的文件夹结构 api 和 auth 处于同一级别,但您将其用作父子
  • 将您的 Auth 目录移动到 Api 文件夹中,否则您必须更改路由 Route::post('register', 'Auth\RegisterController@register');外部路由组

标签: php laravel


【解决方案1】:

路由组

Route::group(['prefix' => 'api', 'namespace' => 'App\Http\Controllers'], function()
{
    Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
     Route::post('password/reset', 'Auth\ResetPasswordController@reset');
     Route::post('register', 'Auth\RegisterController@register');
});

你可以删除文件夹 App\Http\Controllers\Api,你可以使用 PREFIX 你的团体路线

【讨论】:

  • 返回错误:“该路由不支持POST方法”
  • Laravel 在这种情况下考虑 'namespace' = 'App\Http\Controllers' 所以你不需要添加它。我可以使用 namespace='Auth' 删除组内的“Auth”。
【解决方案2】:

我修好了

 // AUTH
   Route::namespace('Auth')->group(function () {
   Route::post('password/email', 'ForgotPasswordController@sendResetLinkEmail');
   Route::post('password/reset', 'ResetPasswordController@reset');
   Route::post('register', 'RegisterController@register');

});

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2016-07-23
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2018-04-05
    • 2018-08-08
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多