Tôi cần thay đổi giá trị của tham số yêu cầu của mình như sau:
$request->name = "My Value!";
Tôi sử dụng mã này nhưng không hoạt động:
$request->offsetSet('img', $img);
Tôi cần thay đổi giá trị của tham số yêu cầu của mình như sau:
$request->name = "My Value!";
Tôi sử dụng mã này nhưng không hoạt động:
$request->offsetSet('img', $img);
Câu trả lời:
Sử dụng merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
Đơn giản! Không cần phải chuyển toàn bộ $request->all()
sang một biến khác.
Cố gắng:
$requestData = $request->all();
$requestData['img'] = $img;
Một cách khác để làm điều đó:
$request->merge(['img' => $img]);
Cảm ơn @JoelHinz về điều này.
Nếu bạn muốn thêm hoặc ghi đè dữ liệu lồng nhau:
$data['some']['thing'] = 'value';
$request->merge($data);
Nếu bạn không chèn Request $request
đối tượng, bạn có thể sử dụng trình request()
trợ giúp toàn cục hoặc \Request::
mặt tiền thay vì$request
Request
mã nguồn của L5 và tôi có thể thấy các phương pháp này. Cảm ơn.
Nếu bạn cần tùy chỉnh yêu cầu
$data = $request->all();
bạn có thể chuyển tên của trường và giá trị
$data['product_ref_code'] = 1650;
và cuối cùng vượt qua yêu cầu mới
$last = Product::create($data);
Nếu bạn cần cập nhật một thuộc tính trong yêu cầu, tôi khuyên bạn nên sử dụng phương thức thay thế từ lớp Yêu cầu được Laravel sử dụng
$request->replace(['property to update' => $newValue]);
Câu trả lời tuyệt vời ở đây nhưng tôi cần thay thế một giá trị trong một yêu cầu JSON. Sau khi đào sâu một chút về mã, tôi đã nghĩ ra đoạn mã sau. Hãy cho tôi biết nếu tôi đang làm điều gì đó ngu ngốc.
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
Nếu bạn sử dụng yêu cầu tùy chỉnh để xác thực, để thay thế dữ liệu để xác thực hoặc để đặt dữ liệu mặc định (cho hộp kiểm hoặc khác), hãy sử dụng phương pháp ghi đè 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'),
]);
}
}
Tôi hy vọng thông tin này sẽ hữu ích cho ai đó.