ฉันต้องการเปลี่ยนค่าของพารามิเตอร์คำขอของฉันดังนี้:
$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);
หากคุณต้องการอัปเดตคุณสมบัติในคำขอฉันขอแนะนำให้คุณใช้วิธีการแทนที่จากคลาสคำขอที่ Laravel ใช้
$request->replace(['property to update' => $newValue]);
คำตอบที่ดีที่นี่ แต่ฉันต้องการแทนที่ค่าในคำขอ JSON หลังจากขุดลงไปในโค้ดเล็กน้อยฉันก็ได้รหัสต่อไปนี้ บอกให้ฉันรู้ว่าฉันทำอะไรโง่ ๆ
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
ถ้าคุณใช้ร้องขอที่กำหนดเองสำหรับการตรวจสอบสำหรับการแทนที่ข้อมูลสำหรับการตรวจสอบหรือข้อมูลการตั้งค่าเริ่มต้น (สำหรับช่องทำเครื่องหมายหรืออื่น ๆ ) 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'),
]);
}
}
ฉันหวังว่าข้อมูลนี้จะเป็นประโยชน์กับใครบางคน
มันได้ผลสำหรับฉัน
$request = new Request();
$request->headers->set('content-type', 'application/json');
$request->initialize(['yourParam' => 2]);
ตรวจสอบผลลัพธ์
$queryParams = $request->query();
dd($queryParams['yourParam']); // 2