Estoy siguiendo el Laracast del tutorial de la API y tratando de crear un ApiController que todos los demás controladores de extender. ApiController es responsable de la respuesta de manejo.

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

        ]);
    }
}

Y también tengo un ReportController que se extiende 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);
    }
}

Cuando intento llamar respondNotFound método de ReportController puedo obtener

Clase ‘App\Http\Controllers\Respuesta’ no se encuentra el error

apesar de que me agregue use Illuminate\Support\Facades\Response;a los padres o del niño de la clase me sale el error. ¿Cómo puedo solucionar este problema ?

Cualquier ayuda se agradece.

  • Trate de use Response; lugar. O el response() ayudante – return response()->json(...);.
  • Parece que el espacio de nombres se utiliza para importar la clase Response no es correcto. uso correcto.
  • El uso de declaraciones son por archivo, usted todavía tiene que incluirlos en el niño las clases, incluso si se incluyen en el padre. Agregar la fachada use la instrucción en la clase hija o el uso \Response
InformationsquelleAutor Tartar | 2017-06-12

1 Comentario

  1. 28

    Ya que es una fachada, añadir esto:

    use Response;

    O el uso completo del espacio de nombres:

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

    O usar el helper:

    return response()->json(...);
    • Donde poner declaración de uso ?
    • En la parte superior de su archivo. Después de la namespace declaración.
    • En la parte superior del archivo que use la Response, después de la <?php y namespace líneas. Lo más probable es que vea uno o más use declaraciones de allí ya.
    • Sí, pero me refiero a los padres o del niño o de ambos ?
    • en cualquier lugar que se utiliza. Declaración de uso son por archivo, que no se extienden al niño de las clases a menos que todos ellos están definidas en el mismo archivo.
    • Me puso tanto para los padres y el niño de las clases. Sigue recibiendo el mismo error.
    • No de estas soluciones anteriores, los probé todos.
    • Es imposible para los return \Response... opción a tirar el error de describir. Si ese enfoque todavía se produce este error, has perdido uno. O estás editando los archivos equivocados, o tienes un problema con la caché.
    • cuando me pongo \Respuesta, no está dando la respuesta esperada, lo mismo va para la función auxiliar. No hay ningún error, pero devuelven un array vacío.
    • Eso es un totalmente problema diferente, y es realmente frustrante que usted diría que «Ninguna de estas soluciones funciona, probado todos» sin tener en cuenta que ¿ de trabajo para resolver el mensaje de error que se describe.
    • Por favor explique la downvote.

Dejar respuesta

Please enter your comment!
Please enter your name here