Cómo obtener todas las entradas de POST en Laravel

5 minutos de lectura

avatar de usuario
Abrar Jahín

Estoy usando Laravel 5 e intento obtener todas las entradas de la variable POST en el controlador de esta manera:

public function add_question()
{
    return Request::all();
}

Entonces, estoy recibiendo estos errores:

ingrese la descripción de la imagen aquí

¿Que estoy haciendo mal?

  • Cuál es el problema ?

    – Cirbilo

    22 de septiembre de 2015 a las 13:57

  • El método no estático Illuminate\Http\Request::all() no debe llamarse de forma estática, asumiendo que $this proviene de un contexto incompatible

    – Abrar Jahín

    22 de septiembre de 2015 a las 13:59

  • El código de arriba está bien. Todo lo que se necesita es la línea use Illuminate\Support\Facades\Request; en la parte superior del archivo. Solo para los datos de la publicación, Request::post() podría usarse en su lugar.

    – Dave F.

    27 de mayo de 2021 a las 0:08


Prueba esto :

use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
    return $request->all();
}

  • ¡Equivocado! También devolverá variables GET.

    – barbusín

    27/04/2017 a las 11:50

  • @barbushin, si todas las respuestas aquí son incorrectas, proporcione la respuesta CORRECTA aquí.

    –Shaunak Shukla

    4 ago. 2017 a las 7:00

  • @ShaunakShukla He proporcionado la respuesta correcta que solo muestra datos POST (aunque su solución resuelve el error principal que tenía el OP)

    – Yahya Udin

    17 de abril de 2018 a las 15:39

  • @Shaunak Shukla No entiendo. Dijiste que proporcionaras la respuesta correcta en tu comentario a barbushin. Así que lo hice.

    – Yahya Udin

    19 de abril de 2018 a las 13:45

  • Esto no funcionó para mí, Laravel versión 5.2.45

    –Vladimir Despotovic

    28 de febrero de 2021 a las 20:45


avatar de usuario
Yahya Udin

Parece que hay un error importante en casi todas las respuestas actuales, ya que muestran AMBAS COSAS OBTENER y POST datos. No SOLAMENTE Datos POST.

El problema con su código como la respuesta aceptada mencionada es que no importó la fachada. Esto se puede importar agregando lo siguiente en la parte superior:

use Request;

public function add_question(Request $request)
{
    return Request::post();
}

También puede usar el método de solicitud global así (mencionado por @Canaan Etai), sin necesidad de importar:

request()->post();

Sin embargo, un mejor enfoque para importar Request en un método de controlador es por inyección de dependencia como se menciona en la respuesta de @shuvrow:

use Illuminate\Http\Request;

public function add_question(Request $request)
{
    return $request->post();
}

Puede encontrar más información sobre DI aquí:

En cualquier caso, debe utilizar:

// Show only POST data
$request->post(); // DI
request()->post(); // global method
Request::post(); // facade

// Show only GET data
$request->query(); // DI
request()->query(); // global method
Request::query(); // facade

// Show all data (i.e. both GET and POST data)
$request->all(); // DI
request()->all(); // global method
Request::all(); // facade

  • Gran respuesta con información sólida y excelentes explicaciones. Gracias, me acabas de salvar de otra hora de googlear.

    –Xander Luciano

    18 de abril de 2018 a las 4:53

  • buena explicación con referencias doc.

    –Shaunak Shukla

    19 de abril de 2018 a las 12:53

  • error de retorno El método de publicación no existe.. También no puedo encontrar post() en documentación

    – Mahoma

    22 de agosto de 2019 a las 9:39

  • Probablemente debería intentar actualizar los documentos. Pero aquí está en los documentos de la API: laravel.com/api/5.8/Illuminate/Http/Concerns/… .

    – Yahya Udin

    22 de agosto de 2019 a las 11:40

  • El método de publicación solo está disponible en Laravel> = 5.5, para 5.4 y versiones anteriores, pruebe esta respuesta

    – Víctor Anuebunwa

    16 oct 2019 a las 8:17

avatar de usuario
Víctor Anuebunwa

Solo para aquellos que vinieron aquí buscando “cómo obtener todas las entradas de POST”

TLDR;

Laravel >= 5.5

$request->post() 
// or 
$request->post('my_param')

Versiones mas antiguas

$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter

Explicación

clase Illuminate\Http\Request se extiende desde Symfony\Component\HttpFoundation\Request que tiene dos variables de clase que almacenan parámetros de solicitud.

public $query – para parámetros GET

public $request – para parámetros POST

$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter

$request->post() para versiones 5.5 y superiores llamadas internas $request->request->all() o $request->request->get('my_param') respectivamente.

Fuente aquí

  • Creo que mi solución a este problema es mejor. Solo haz $request->post()

    – Yahya Udin

    17/04/2018 a las 15:40

  • $request->post() solo está disponible en Laravel >= 5.5

    – Víctor Anuebunwa

    16 de octubre de 2019 a las 8:18

avatar de usuario
Joel Hinz

Deberías usar la fachada en lugar de Illuminate\Http\Request. Importarlo en la parte superior:

use Request;

Y asegúrese de que no entre en conflicto con la otra clase.

Editar: esta respuesta fue escrita hace unos años. Ahora estoy a favor del enfoque sugerido por shuvrow a continuación.

Puede obtener todos los datos de publicación en esta función: –

$postData = $request->post();

y si desea un archivo específico, utilícelo: –

$request->post('current-password');

es mejor usar la Dependencia que adjuntarla a la clase.

public function add_question(Request $request)
{
    return Request::all();
}

o si prefiere usar la variable de entrada use

public function add_question(Request $input)
{
    return $input::all();
}

ahora puede usar el método de solicitud global proporcionado por laravel

request()

por ejemplo, para obtener el nombre de una entrada de formulario.

request()->first_name
// or
request('first_name')

avatar de usuario
Hiren Gohel

Puedes usarlo

$params = request()->all();

sin que

import Illuminate\Http\Request O

use Illuminate\Support\Facades\Request U otro.

¿Ha sido útil esta solución?