Error: llamada al método no definido Illuminate \ Http \ Request :: put ()
Morteza Negahi
put () es un método de colección, $ request-> all () devuelve una matriz.
Joel Hinz
3
El objeto de solicitud en realidad tiene métodos replace () y merge (). Generalmente prefiero usar esos. Vea mi comentario sobre la pregunta para obtener una respuesta SO sobre eso.
Joel Hinz
@JoelHinz, pensé que no funcionan en Laravel 5, porque vi algunas publicaciones donde los chicos tenían problemas con el uso de estos métodos. Pero he examinado el Requestcódigo fuente de L5 y puedo ver estos métodos. Gracias.
Alexey Mezenin
4
Sin sudar. Sin embargo, tu respuesta sigue siendo incorrecta. El método replace () reemplaza toda la entrada; debe fusionar () si solo desea reemplazar un valor.
Tenga cuidado, reemplace el método, elimine los datos solicitados originales y reemplácelos todos por su matriz. \ Symfony \ Component \ HttpFoundation \ ParameterBag línea 54 función pública reemplazar (matriz $ parámetros = []) {$ esto-> parámetros = $ parámetros; }
Oleg
2
Excelentes respuestas aquí, pero necesitaba reemplazar un valor en una solicitud JSON. Después de indagar un poco en el código, se me ocurrió el siguiente código. Avísame si estoy haciendo algo tonto.
Si usa solicitudes personalizadas para la validación, para reemplazar datos para la validación o para establecer datos predeterminados (para casillas de verificación u otros), use el método de anulación prepareForValidation().
Respuestas:
Utilizar
merge()
:$request->merge([ 'user_id' => $modified_user_id_here, ]);
¡Sencillo! No es necesario transferir todo
$request->all()
a otra variable.fuente
Intentar:
$requestData = $request->all(); $requestData['img'] = $img;
Otra forma de hacerlo:
$request->merge(['img' => $img]);
Gracias a @JoelHinz por esto.
Si desea agregar o sobrescribir datos anidados:
$data['some']['thing'] = 'value'; $request->merge($data);
Si no inyecta el
Request $request
objeto, puede usar elrequest()
asistente global o la\Request::
fachada en lugar de$request
fuente
Request
código fuente de L5 y puedo ver estos métodos. Gracias.Si necesita personalizar la solicitud
puedes pasar el nombre del campo y el valor
$data['product_ref_code'] = 1650;
y finalmente pasar la nueva solicitud
fuente
Si necesita actualizar una propiedad en la solicitud, le recomiendo que use el método de reemplazo de la clase Request que usa Laravel
$request->replace(['property to update' => $newValue]);
fuente
Excelentes respuestas aquí, pero necesitaba reemplazar un valor en una solicitud JSON. Después de indagar un poco en el código, se me ocurrió el siguiente código. Avísame si estoy haciendo algo tonto.
$json = $request->json()->all(); $json['field'] = 'new value'; $request->json()->replace($json);
fuente
Si usa solicitudes personalizadas para la validación, para reemplazar datos para la validación o para establecer datos predeterminados (para casillas de verificación u otros), use el método de anulación
prepareForValidation()
.namespace App\Http\Requests\Admin\Category; class CategoryRequest extends AbstractRequest { protected function prepareForValidation() { if ( ! $this->get('url')) { $this->merge([ 'url' => $this->get('name'), ]); } $this->merge([ 'url' => \Str::slug($this->get('url')), 'active' => (int)$this->get('active'), ]); } }
Espero que esta información le sea útil a alguien.
fuente
Funciona para mi
$request = new Request(); $request->headers->set('content-type', 'application/json'); $request->initialize(['yourParam' => 2]);
comprobar salida
$queryParams = $request->query(); dd($queryParams['yourParam']); // 2
fuente