2017-06-12 159 views
1

我遵循Laracast的API教程并尝试创建所有其他控制器扩展的ApiControllerApiController负责响应处理。Laravel 5.4:找不到类'App Http Controllers Response'错误

class ApiController extends Controller 
{ 
    protected $statusCode; 

    public function getStatusCode() 
    { 
     return $this->statusCode; 
    } 

    public function setStatusCode($statusCode) 
    { 
     $this->statusCode = $statusCode; 
    } 

    public function respondNotFound($message = 'Not Found!') 
    { 
     return Reponse::json([ 

      'error' => [ 
       'message' => $message, 
       'status_code' => $this->getStatusCode() 
      ] 

     ]); 
    } 
} 

,我也有一个扩展ApiController一个ReportController

class ReportController extends ApiController 
{ 
    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($id) 
    { 
     $report = Report::find($id); 

     if (! $report) { 
      $this->respondNotFound(Report does not exist.'); 
     } 

     return Response::json([ 
      'data'=> $this->ReportTransformer->transform($report) 
     ], 200); 
    } 
} 

当我试图从ReportController调用respondNotFound方法,我得到

级 '应用程序\ HTTP \控制器\响应' 未找到错误

eventhough我添加use Illuminate\Support\Facades\Response;母公司或孩子班我得到错误。我怎样才能解决这个问题 ?

任何帮助,将不胜感激。

+1

尝试'使用响应;'来代替。或者'response()'helper - 'return response() - > json(...);'。 – ceejayoz

+0

似乎您用来导入类“响应”的名称空间不正确。使用正确的。 – Mojtaba

+0

使用语句是每个文件,即使它们包含在父级中,您仍然必须将它们包括在子类中。要么在子类中添加facade使用语句,要么使用'\ Response' – jfadich

回答

8

因为它是一个门面,补充一点:

use Response; 

或者使用完整的命名空间:

return \Response::json(...); 

或者只是使用帮手:

return response()->json(...); 
+0

在哪里放置使用语句? – Tartar

+0

在文件顶部。在'namespace'声明之后。 –

+1

@Tartar在<?php'和'namespace'行之后,在使用'Response'的文件顶部。您可能会看到一个或多个'use'语句。 – ceejayoz

相关问题