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:
¿Que estoy haciendo mal?
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
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í:
- https://laravel.com/docs/5.6/container
- https://laravel.com/docs/5.6/controllers#dependency-injection-and-controllers
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
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
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')
Hiren Gohel
Puedes usarlo
$params = request()->all();
sin que
import Illuminate\Http\Request
O
use Illuminate\Support\Facades\Request
U otro.
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