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.
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(...);