Me encuentro con una situación en Laravel mientras llamo a un método store () o update () con el parámetro Request para agregar algún valor adicional a la solicitud antes de llamar a las funciones Eloquent, ¿hay alguna forma de hacerlo?
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
$request->all()
matriz?array_add()
ayudante?$array = array_add($request->all(), 'new_key', $value);
: laravel.com/docs/5.2/helpers#method-array-add Si este no es el tipo de cosa que está buscando, ¿podría proporcionar más información para su pregunta?Respuestas:
Por lo general, no desea agregar nada a un objeto Request, es mejor usar la colección y el
put()
ayudante:function store(Request $request) { // some additional logic or checking User::create(array_merge($request->all(), ['index' => 'value'])); }
O podría unir matrices :
User::create($request->all() + ['index' => 'value']);
Pero, si realmente desea agregar algo a un objeto Request, haga esto:
$request->request->add(['variable' => 'value']); //add request
fuente
Refiriéndose a
Alexey Mezenin
responder:Mientras usaba su respuesta, tuve que agregar algo directamente al objeto de solicitud y usé:
$request->request->add(['variable', 'value']);
Usando esto, agrega dos variables:
$request[0] = 'variable', $request[1] = 'value'
Si eres un novato como yo y necesitas una matriz asociada, la forma correcta de hacerlo es
$request->request->add(['variable' => 'value']);
Espero haberte salvado algo de tiempo
PD: Gracias
@Alexey
, realmente me ayudaste con tu respuesta.fuente
Model
clase como:protected $fillable = ['slug'];
Probé
$request->merge($array)
función en laravel 5.2 y está trabajando perfectamente.Ejemplo:
$request->merge(["key"=>"value"]);
fuente
En laravel 5.6 podemos pasar parámetros entre Middlewares por ejemplo:
FirstMiddleware
public function handle($request, Closure $next, ...$params) { //some code return $next($request->merge(['key' => 'value'])); }
SecondMiddleware
public function handle($request, Closure $next, ...$params) { //some code dd($request->all()); }
fuente
$request->merge()
método FTW! Gracias.He dicho suficiente sobre este tema, pero no pude resistirme a agregar mi propia respuesta. Creo que el enfoque más simple es
request()->merge([ 'foo' => 'bar' ]);
fuente
También puede utilizar el siguiente código
$request->request->set(key, value).
Me queda mejor.
fuente
Para agregar un nuevo parámetro, por ejemplo:
newParam
alRequest
objeto actual , puede hacer:$newParam = "paramvalue"; $request->request->add(['newParam' => $newParam]);
Después de agregar el nuevo parámetro, podrá ver este parámetro recién agregado al objeto Solicitud de la siguiente manera:
dd($request);//prints the contents of the Request object
fuente
Usé este código para agregar algo a mi solicitud.
$req->query->add(['key'=>'variable']); $req->request->add(['key'=>'variable']);
fuente
Puede acceder directamente a la matriz de solicitudes con
$request['key'] = 'value'
;fuente
Basado en mis observaciones :
$request->request->add(['variable' => 'value']);
funcionará (principalmente) en los métodos POST, PUT & DELETE , porque hay valores pasados, uno de ellos es_token
. Como ejemplo a continuación.<form action="{{ route('process', $id) }}" method="POST"> @csrf </form> public function process(Request $request, $id){ $request->request->add(['id' => $id]); }
Pero [debajo del código] no funcionará porque no hay ningún valor (s) pasado, realmente no agrega.
<a href='{{ route('process', $id) }}'>PROCESS</a> public function process(Request $request, $id){ $request->request->add(['id' => $id]); }
Al utilizar el método GET , puede declarar Solicitud y asignar valores directamente. Como abajo:
public function process($id){ $request = new Request(['id' => $id]); }
O puede usar
merge
. En realidad, esto es mejor que$request->request->add(['variable' => 'value']);
porque puede inicializar y agregar valores de solicitud que funcionarán para todos los métodos ( GET , POST , PUT , DELETE )public function process(Request $request, $id){ $request->merge(['id' => $id]); }
Etiqueta: laravel5.8.11
fuente
El mejor que he usado e investigado es $ request-> merge ([]) (Check My Piece of Code):
public function index(Request $request) { not_permissions_redirect(have_premission(2)); $filters = (!empty($request->all())) ? true : false; $request->merge(['type' => 'admin']); $users = $this->service->getAllUsers($request->all()); $roles = $this->roles->getAllAdminRoles(); return view('users.list', compact(['users', 'roles', 'filters'])); }
Verifique la línea # 3 dentro de la función de índice.
fuente
Puede agregar parámetros a la solicitud desde un middleware haciendo:
public function handle($request, Closure $next) { $request->route()->setParameter('foo', 'bar'); return $next($request); }
fuente
fuente