web-dev-qa-db-fra.com

Laravel 5.4: Erreur de classe 'App \ Http \ Controllers \ Response' non trouvée

Je suis le didacticiel de l'API de Laracast et j'essaie de créer un ApiController que tous les autres contrôleurs étendent. ApiController est responsable de la gestion des réponses.

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()
            ]

        ]);
    }
}

Et j'ai aussi un ReportController qui étend ApiController.

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);
    }
}

Lorsque j'essaie d'appeler la méthode respondNotFound à partir de ReportController j'obtiens

Erreur de classe "App\Http\Controllers\Response" introuvable

même si j'ajoute use Illuminate\Support\Facades\Response;à la classe parent ou enfant, j'obtiens l'erreur. Comment puis-je réparer cela ?

Toute aide serait appréciée.

9
Tartar

Puisqu'il s'agit d'une façade, ajoutez ceci:

use Response;

Ou utilisez l'espace de noms complet:

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

Ou utilisez simplement helper:

return response()->json(...);
28
Alexey Mezenin