Saya sangat baru dalam symfony. Dalam bahasa lain seperti java dan lainnya saya dapat menggunakanrequest.getParameter('parmeter name')
untuk mendapatkan nilai.
Apakah ada hal serupa yang dapat kita lakukan dengan symfony2.
Saya telah melihat beberapa contoh tetapi tidak ada yang bekerja untuk saya. Misalkan saya memiliki bidang isian dengan nama pengguna . Dalam bentuk tindakan saya mencoba menggunakan sesuatu seperti ini:
$request = $this->getRequest();
$username= $request->request->get('username');
Saya juga sudah mencoba
$username = $request->getParameter('username');
dan
$username=$request->request->getParameter('username');
Tapi tidak ada opsi yang berfungsi. Namun berikut ini berfungsi dengan baik:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Di mana saya melakukan kesalahan dalam menggunakan getParameter()
metode. Bantuan apa pun akan dihargai.
$request->request-get()
seharusnya$request->request->get()
. Mungkinkah itu?get()
adalah metode yang benar dan (b) menyalakan pemberitahuan PHP sehingga Anda dapat melihat apakah ada masalah? (c) Apakah Symfony 2 memiliki toolbar debug seperti symfony 1, sehingga Anda dapat melihat apakah Anda telah membuat kesalahan?Jawaban:
Penamaannya tidak terlalu intuitif:
sumber
$_GET
data adalah data dari string kueri (tidak adaGET
permintaan yang diperlukan sama sekali) dan$_POST
data adalah data dari badan permintaan (tidak harus berupaPOST
permintaan juga, bisa sajaPUT
).$request->get
dan$request->post
akan lebih sederhana.Saya melakukannya lebih sederhana:
Pilihan lain adalah untuk memperkenalkan parameter Anda ke dalam definisi fungsi aksi Anda:
yang, kemudian menganggap bahwa Anda mendefinisikan {foo} dan {bar} sebagai bagian dari pola URL Anda di file routing.yml Anda:
sumber
foo
parameter dalam string kueri dan dalam tubuh POST, yang mana yang akan dikembalikan$request->get('foo')
?$request->get('foo');
untuk SEMUA tas (urutannya adalah: PATH, GET, POST). Namun demikian,$request->request->get('foo');
hanya berfungsi untuk tas POST. Akhirnya, yang pertama ($request->get()
) tidak direkomendasikan jika kita tahu di mana datanya (GET / POST).Anda bisa menggunakan kode berikut untuk mendapatkan nilai kolom formulir Anda
Atau Anda juga bisa mendapatkan semua nilai formulir sebagai array dengan menggunakan
sumber
mencoba
periksa nama atribut dari bidang formular Anda
sumber
Di dalam controller:
sumber
$this->getRequest()
tidak digunakan lagi, demi menyuntikkan Permintaan ke dalam tindakan pengontrol, misalnya:public function showAction(Request $request, $id);
Pilihan Anda:
$request->request->get('param')
($_POST['param']
) atau$request->query->get('param')
($_GET['param']
)Lebih lanjut tentang
OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.htmlsumber
Karena
$this->getRequest()
metode sekarang sudah tidak digunakan lagi, Anda perlu menyuntikkanRequest
objek ke dalam tindakan pengontrol Anda seperti ini:setelah itu Anda dapat menggunakan salah satu dari yang berikut ini.
Jika Anda ingin mengambil data POST dari permintaan, gunakan yang berikut:
tetapi jika Anda ingin mengambil data GET dari permintaan gunakan ini:
sumber
Anda dapat melakukannya:
Terkadang, ketika atribut dilindungi, Anda tidak dapat memiliki akses untuk mendapatkan nilai untuk metode akses umum:
(POS)
(DAPATKAN)
(UMUM)
sumber
$clientName = $request->query->get('clientName','any');
Sebagian besar kasus seperti mendapatkan string kueri atau parameter formulir tercakup dalam jawaban di atas.
Saat bekerja dengan data mentah, seperti string JSON mentah di tubuh yang ingin Anda berikan sebagai argumen
json_decode()
, metodeRequest::getContent()
ini dapat digunakan.Informasi tambahan yang berguna tentang permintaan HTTP di Symfony dapat ditemukan pada dokumentasi paket HttpFoundation .
sumber
sumber
Request
parameter? (misalnya dalam fungsi pribadi dari kelas controller misalnya)Terima kasih, Anda juga dapat menggunakan kode di atas
sumber
Jika Anda perlu mendapatkan nilai dari pilih, Anda dapat menggunakan:
sumber
Coba ini, ini berhasil
Salam
sumber
sumber
Untuk pengguna symfony 4:
sumber
# www.example / register / admin
sumber