Symfony 2.2
solusi ini tidak digunakan lagi sejak 2.3 dan akan dihapus di 3.0, lihat dokumentasi
$form->getData();
memberi Anda array untuk parameter formulir
dari buku symfony2 halaman 162 (Bab 12: Formulir)
[...] terkadang, Anda mungkin hanya ingin menggunakan formulir tanpa kelas, dan mendapatkan kembali array data yang dikirimkan. Ini sebenarnya sangat mudah:
public function contactAction(Request $request) {
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('message', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
}
// ... render the form
}
Anda juga dapat mengakses nilai POST (dalam hal ini "nama") secara langsung melalui objek permintaan, seperti:
$this->get('request')->request->get('name');
Namun, perlu diketahui bahwa dalam banyak kasus, menggunakan metode getData () adalah pilihan yang lebih baik, karena metode ini mengembalikan data (biasanya berupa objek) setelah diubah oleh kerangka formulir.
Saat Anda ingin mengakses token formulir, Anda harus menggunakan jawaban Bermasalah
$postData = $request->request->get('contact');
karena getData()
menghapus elemen dari array
Symfony 2.3
sejak 2.3 Anda harus menggunakan handleRequest
alih-alih bindRequest
:
$form->handleRequest($request);
lihat dokumentasi
Nilai posting formulir disimpan dengan nama formulir dalam permintaan. Misalnya, jika Anda telah mengganti
getName()
metode ContactType () untuk mengembalikan "contact", Anda akan melakukan ini:Jika Anda masih mengalami masalah, cobalah melakukan
var_dump()
pada$request->request->all()
untuk melihat semua nilai pos.sumber
getName()
, maka masuk akal untuk tidak menggunakan nama hardcode:$request->request->get($form->getName());
apa yang berhasil bagi saya adalah menggunakan ini:
sumber
Ada satu trik dengan
ParameterBag::get()
metode. Anda dapat menyetel$deep
parameter ketrue
dan mengakses nilai berlapis dalam yang diperlukan tanpa variabel tambahan:Anda juga memiliki kemungkinan untuk menetapkan nilai default (parameter
get()
metode ke-2 ), ini dapat menghindariisset($form['some']['deep']['data'])
panggilan yang berlebihan .sumber
Data lapangan dapat diakses di pengontrol dengan: Daftar 12-34
Sebagai tambahan, data dari field yang belum dipetakan juga dapat diubah secara langsung: Daftar 12-35
halaman 164 buku symfony2 (dibuat pada 9 Oktober 2013)
sumber
Saya mengakses parameter ticketNumber untuk permintaan posting multibagian saya dengan cara berikut.
sumber
Saya pikir untuk mendapatkan data permintaan, terikat dan divalidasi oleh objek formulir, Anda harus menggunakan:
$form->getClientData();
sumber
Doc Symfony untuk mendapatkan data permintaan
$ content = $ request-> getContent ();
sumber
Jika Anda seorang pemula, selamat datang di Symfony2, sebuah proyek sumber terbuka jadi jika Anda ingin belajar banyak, Anda dapat membuka sumbernya!
Dari "Form.php":
getData () getNormData () getViewData ()
Anda dapat menemukan detail lebih lanjut di file ini.
sumber
$form->getData();
Saya tahu orang malas dan ingin solusi tanpa berpikir sedikit pun ;-(