代码之家  ›  专栏  ›  技术社区  ›  Javed

Laravel:未找到扩展控制器

  •  0
  • Javed  · 技术社区  · 7 年前

    尝试获取数据并通过转换器返回数据时出错 Class 'App\\Api\\V1\\Controllers\\Auth\\ApiController' not found 。使用ApiController进行扩展。我将APIcontroller置于 App\\Api\\V1\\Controllers\\Front 文件夹

    LoginController代码并将其扩展到ApiController:

    <?php
    
    namespace App\Api\V1\Controllers\Auth;
    
    use Auth;
    use Carbon\Carbon;
    use Tymon\JWTAuth\JWTAuth;
    use App\Http\Controllers\Controller;
    use App\Api\V1\Requests\LoginRequest;
    use Tymon\JWTAuth\Exceptions\JWTException;
    use Symfony\Component\HttpKernel\Exception\HttpException;
    use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
    use App\User;
    use App\UserDeviceData;
    use Illuminate\Http\Request;
    use App\Transformers\UserTransformer;
    
    class LoginController extends ApiController // extends to API controller
    {
        public function login(LoginRequest $request, JWTAuth $JWTAuth)
        {
            $credentials = $request->only(['email', 'password']);
            try {
                $token = Auth::guard()->attempt($credentials);
                if(!$token) {
                    return response()->json([
                        'message' => "Email and password do not match",
                        'status_code' => 403,
                    ]);
                }
    
                $user = Auth::user();
                $user->last_login = Carbon::now();
                $user->save();
    
                $user = Auth::user();
                $user->UserDeviceData()->firstOrCreate([
                    'device_id' => $request->device_id
                ]);
    
    
            } catch (JWTException $e) {
                return response()->json([
                    'message' => "Internal server error",
                    'status_code' => 500,
                ]);
            }
            return $this->response->collection($user, new UserTransformer);
        }
    }
    

    Api控制器代码:和设置 namespace App\Api\V1\Controllers\Front;

    <?php
    
    namespace App\Api\V1\Controllers\Front;
    
    use App\Support\Response;
    use App\Support\Parameters;
    
    abstract class ApiController extends Controller
    {
    
        protected $response;
        protected $parameters;
    
        public function __construct(Response $response, Parameters $parameters)
        {
            $this->response = $response;
            $this->parameters = $parameters;
        }
    }
    

    我的代码中有什么问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   SystemGlitch    7 年前

    ApiController LoginController 正在使用不同的命名空间,您需要 use 你的 ApicController 在里面 登录控制器

    use App\Api\V1\Controllers\Front\ApiController;
    

    你也忘了 使用 Controller 在里面 ApicController :

    use App\Http\Controllers\Controller;