Symfony 2.2
это решение не рекомендуется с версии 2.3 и будет удалено в версии 3.0, см. документацию
$form->getData();
дает вам массив для параметров формы
из книги symfony2 на странице 162 (Глава 12: Формы)
[...] иногда вы можете просто использовать форму без класса и получить обратно массив отправленных данных. На самом деле это действительно просто:
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
}
Вы также можете получить доступ к значениям POST (в данном случае «name») напрямую через объект запроса, например:
$this->get('request')->request->get('name');
Однако имейте в виду, что в большинстве случаев использование метода getData () является лучшим выбором, поскольку он возвращает данные (обычно объект) после того, как они были преобразованы фреймворком формы.
Если вы хотите получить доступ к токену формы, вы должны использовать ответ Problematic,
$postData = $request->request->get('contact');
потому что getData()
удаляет элемент из массива
Symfony 2.3
начиная с 2.3 вы должны использовать handleRequest
вместо bindRequest
:
$form->handleRequest($request);
см. документацию
Значения сообщений формы хранятся под именем формы в запросе. Например, если вы переопределили
getName()
метод ContactType () для возврата «контакта», вы должны сделать следующее:Если вы все еще возникают проблемы, попробуйте сделать
var_dump()
на ,$request->request->all()
чтобы увидеть все почтовые значения.источник
getName()
, тогда имеет смысл не кодировать имена жестко:$request->request->get($form->getName());
что сработало для меня, использовало это:
источник
Есть одна хитрость с
ParameterBag::get()
методом. Вы можете установить$deep
параметр дляtrue
и доступа к требуемому глубокому вложенному значению без дополнительных переменного:Также у вас есть возможность установить значение по умолчанию (2-й параметр
get()
метода), это может избежать повторногоisset($form['some']['deep']['data'])
вызова.источник
Доступ к данным поля можно получить в контроллере с помощью: Листинга 12-34.
Кроме того, данные неотображенного поля также можно изменять напрямую: Листинг 12-35.
страница 164 книга symfony2 (сгенерирована 9 октября 2013 г.)
источник
Я получаю доступ к параметру ticketNumber для своего составного почтового запроса следующим образом.
источник
Я думаю, что для получения данных запроса, связанных и проверенных объектом формы, вы должны использовать:
$form->getClientData();
источник
Symfony документ , чтобы получить данные запроса
$ content = $ request-> getContent ();
источник
Если вы новичок, добро пожаловать в Symfony2, проект с открытым исходным кодом, поэтому, если вы хотите многому научиться, вы можете открыть исходный код!
Из "Form.php":
getData () getNormData () getViewData ()
Вы можете найти более подробную информацию в этом файле.
источник
$form->getData();
я знаю, что люди ленивы и хотят найти решение, даже не задумываясь ;-(