Preciso alterar o valor do meu parâmetro de solicitação assim:
$request->name = "My Value!";
Eu uso este código, mas não funciona:
$request->offsetSet('img', $img);
Preciso alterar o valor do meu parâmetro de solicitação assim:
$request->name = "My Value!";
Eu uso este código, mas não funciona:
$request->offsetSet('img', $img);
Respostas:
Use merge():
$request->merge([
'user_id' => $modified_user_id_here,
]);
Simples! Não há necessidade de transferir o todo $request->all()para outra variável.
Tente:
$requestData = $request->all();
$requestData['img'] = $img;
Outra maneira de fazer isso:
$request->merge(['img' => $img]);
Obrigado a @JoelHinz por isso.
Se você deseja adicionar ou substituir dados aninhados:
$data['some']['thing'] = 'value';
$request->merge($data);
Se você não injetar Request $requestobjeto, você pode usar o request()auxiliar global ou \Request::fachada em vez de$request
Requestcódigo-fonte do L5 e posso ver esses métodos. Obrigado.
Se você precisa personalizar a solicitação
$data = $request->all();
você pode passar o nome do campo e o valor
$data['product_ref_code'] = 1650;
e finalmente passar o novo pedido
$last = Product::create($data);
Ótimas respostas aqui, mas eu precisava substituir um valor em uma solicitação JSON. Depois de examinar um pouco o código, encontrei o seguinte código. Me avise se eu estiver fazendo algo idiota.
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
Se você precisar atualizar uma propriedade na solicitação, eu recomendo que você use o método replace da classe Request usada pelo Laravel
$request->replace(['property to update' => $newValue]);
Se você usar solicitações personalizadas para validação, para substituir dados para validação ou para definir dados padrão (para caixas de seleção ou outro), use o método de substituição 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 informação seja útil para alguém.
Use adicionar
$request->request->add(['img' => $img]);