Мені потрібно змінити значення параметра мого запиту так:
$request->name = "My Value!";
Я використовую цей код, але не працює:
$request->offsetSet('img', $img);
Мені потрібно змінити значення параметра мого запиту так:
$request->name = "My Value!";
Я використовую цей код, але не працює:
$request->offsetSet('img', $img);
Відповіді:
Використання merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
Просто! Не потрібно передавати ціле $request->all()
в іншу змінну.
Намагайся:
$requestData = $request->all();
$requestData['img'] = $img;
Ще один спосіб зробити це:
$request->merge(['img' => $img]);
Дякую @JoelHinz за це.
Якщо ви хочете додати або перезаписати вкладені дані:
$data['some']['thing'] = 'value';
$request->merge($data);
Якщо ви не вводите Request $request
об'єкт, ви можете використовувати глобальний request()
помічник або \Request::
фасад замість$request
Request
вихідний код L5 і бачу ці методи. Дякую.
Якщо вам потрібно налаштувати запит
$data = $request->all();
Ви можете передати назву поля та значення
$data['product_ref_code'] = 1650;
і нарешті передати новий запит
$last = Product::create($data);
Якщо вам потрібно оновити властивість у запиті, я рекомендую вам використовувати метод replace із класу Request, що використовується Laravel
$request->replace(['property to update' => $newValue]);
Якщо ви використовуєте власні запити для перевірки, для заміни даних для перевірки або для встановлення даних за замовчуванням (для прапорців чи іншого), використовуйте метод заміщення 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'),
]);
}
}
Сподіваюсь, ця інформація комусь стане в нагоді.