Symfony 2.2
giải pháp này không được dùng nữa kể từ 2.3 và sẽ bị xóa trong 3.0, xem tài liệu
$form->getData();
cung cấp cho bạn một mảng cho các tham số biểu mẫu
từ sách symfony2 trang 162 (Chương 12: Biểu mẫu)
[...] đôi khi, bạn có thể chỉ muốn sử dụng một biểu mẫu không có lớp và lấy lại một mảng dữ liệu đã gửi. Điều này thực sự rất dễ dàng:
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
}
Bạn cũng có thể truy cập các giá trị POST (trong trường hợp này là "tên") trực tiếp thông qua đối tượng yêu cầu, như sau:
$this->get('request')->request->get('name');
Tuy nhiên, hãy lưu ý rằng trong hầu hết các trường hợp, sử dụng phương thức getData () là lựa chọn tốt hơn, vì nó trả về dữ liệu (thường là một đối tượng) sau khi nó được khung biểu mẫu chuyển đổi.
Khi bạn muốn truy cập mã thông báo biểu mẫu, bạn phải sử dụng câu trả lời của Problematic
$postData = $request->request->get('contact');
vì getData()
phần tử loại bỏ khỏi mảng
Symfony 2.3
kể từ 2.3 bạn nên sử dụng handleRequest
thay vì bindRequest
:
$form->handleRequest($request);
xem tài liệu