Necesito cambiar el valor de mi parámetro de solicitud de esta manera:
$request->name = "My Value!";
Utilizo este código pero no funciona:
$request->offsetSet('img', $img);
Necesito cambiar el valor de mi parámetro de solicitud de esta manera:
$request->name = "My Value!";
Utilizo este código pero no funciona:
$request->offsetSet('img', $img);
Respuestas:
Utilizar merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
¡Sencillo! No es necesario transferir todo $request->all()
a otra variable.
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 el request()
asistente global o la \Request::
fachada en lugar de$request
Request
código fuente de L5 y puedo ver estos métodos. Gracias.
Si necesita personalizar la solicitud
$data = $request->all();
puedes pasar el nombre del campo y el valor
$data['product_ref_code'] = 1650;
y finalmente pasar la nueva solicitud
$last = Product::create($data);
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]);
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);
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.