Kesalahan: Panggilan ke metode tak terdefinisi Illuminate \ Http \ Request :: put ()
Morteza Negahi
put () adalah metode pengumpulan, $ request-> all () mengembalikan array.
Joel Hinz
3
Objek permintaan sebenarnya memiliki metode replace () dan merge (). Saya biasanya lebih suka menggunakan itu. Lihat komentar saya pada pertanyaan untuk jawaban SO tentang itu.
Joel Hinz
@JoelHinz, saya pikir mereka tidak berfungsi di Laravel 5, karena saya melihat beberapa posting di mana orang-orang mengalami masalah dengan menggunakan metode ini. Tetapi saya telah melihat Requestkode sumber L5 dan saya dapat melihat metode ini. Terima kasih.
Alexey Mezenin
4
Tanpa keringat. Jawaban Anda masih salah. Metode replace () menggantikan seluruh input - Anda perlu merge () jika Anda hanya ingin mengganti satu nilai.
Jika Anda perlu memperbarui properti dalam permintaan, saya sarankan Anda untuk menggunakan metode ganti dari kelas Permintaan yang digunakan oleh Laravel
$request->replace(['property to update' => $newValue]);
Hati-hati, ganti metode, hapus data reqest asli, dan ganti semua dengan array Anda. \ Symfony \ Component \ HttpFoundation \ ParameterBag baris 54 fungsi publik ganti (array $ parameter = []) {$ this-> parameter = $ parameter; }
Oleg
2
Jawaban bagus di sini, tetapi saya perlu mengganti nilai dalam permintaan JSON. Setelah sedikit menggali kode, saya menemukan kode berikut. Beri tahu saya jika saya melakukan sesuatu yang bodoh.
Jika Anda menggunakan permintaan kustom untuk validasi, untuk mengganti data untuk validasi, atau untuk menyetel data default (untuk kotak centang atau lainnya) gunakan metode override prepareForValidation().
Jawaban:
Penggunaan
merge()
:$request->merge([ 'user_id' => $modified_user_id_here, ]);
Sederhana! Tidak perlu mentransfer keseluruhan
$request->all()
ke variabel lain.sumber
Mencoba untuk:
$requestData = $request->all(); $requestData['img'] = $img;
Cara lain untuk melakukannya:
$request->merge(['img' => $img]);
Terima kasih kepada @JoelHinz untuk ini.
Jika Anda ingin menambah atau menimpa data bertingkat:
$data['some']['thing'] = 'value'; $request->merge($data);
Jika Anda tidak memasukkan
Request $request
objek, Anda dapat menggunakan globalrequest()
helper atau\Request::
fasad sebagai gantinya$request
sumber
Request
kode sumber L5 dan saya dapat melihat metode ini. Terima kasih.Jika Anda perlu menyesuaikan permintaan
Anda dapat memberikan nama bidang dan nilainya
$data['product_ref_code'] = 1650;
dan akhirnya lolos permintaan baru
sumber
Jika Anda perlu memperbarui properti dalam permintaan, saya sarankan Anda untuk menggunakan metode ganti dari kelas Permintaan yang digunakan oleh Laravel
$request->replace(['property to update' => $newValue]);
sumber
Jawaban bagus di sini, tetapi saya perlu mengganti nilai dalam permintaan JSON. Setelah sedikit menggali kode, saya menemukan kode berikut. Beri tahu saya jika saya melakukan sesuatu yang bodoh.
$json = $request->json()->all(); $json['field'] = 'new value'; $request->json()->replace($json);
sumber
Jika Anda menggunakan permintaan kustom untuk validasi, untuk mengganti data untuk validasi, atau untuk menyetel data default (untuk kotak centang atau lainnya) gunakan metode override
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'), ]); } }
Semoga informasi ini bermanfaat bagi seseorang.
sumber
Ini bekerja untuk saya
$request = new Request(); $request->headers->set('content-type', 'application/json'); $request->initialize(['yourParam' => 2]);
periksa keluaran
$queryParams = $request->query(); dd($queryParams['yourParam']); // 2
sumber