2017-06-12 11 views
1

私はLaracastのAPIチュートリアルに従い、他のすべてのコントローラーが拡張するApiControllerを作成しようとしています。応答処理はApiControllerが担当します。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メソッドを呼び出そうとするとき、私は私が親またはにuse Illuminate\Support\Facades\Response;を追加本家

見つからないエラー

クラスのレスポンス\アプリケーション\のHttp \コントローラ」を取得子クラス私はエラーを取得します。どうすればこの問題を解決できますか?

ご協力いただければ幸いです。

+1

はレスポンスを使用し 'てみてください。'代わりに。または、 'response()'ヘルパー - 'return response() - > json(...);'です。 – ceejayoz

+0

クラス 'Response'をインポートするために使用している名前空間が正しくないようです。正しいものを使用してください。 – Mojtaba

+0

Useステートメントはファイルごとですが、それらが親クラスに含まれていても子クラスに含める必要があります。子クラスにfacade use文を追加するか、 '\ Response'を使用する – jfadich

答えて

8

それはファサードですので、この追加:

use Response; 

または完全な名前空間を使用します。

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

それともヘルパーを使用しては:

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

どこにuse文を入れるのですか? – Tartar

+0

ファイルの先頭に。 'namespace'宣言の後ろにあります。 –

+1

@Tartar '<?php'と' namespace'行の後に 'Response'を使っているファイルの先頭です。あなたはすでにそこに1つ以上の 'use'ステートメントを見るでしょう。 – ceejayoz

関連する問題