Symfony 2.2
to rozwiązanie jest przestarzałe od wersji 2.3 i zostanie usunięte w wersji 3.0, zobacz dokumentację
$form->getData();
daje tablicę dla parametrów formularza
z książki symfony2 strona 162 (Rozdział 12: Formularze)
[...] czasami możesz po prostu użyć formularza bez klasy i odzyskać tablicę przesłanych danych. To jest naprawdę proste:
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 = $form->getData();
}
}
Możesz również uzyskać dostęp do wartości POST (w tym przypadku „name”) bezpośrednio przez obiekt żądania, na przykład:
$this->get('request')->request->get('name');
Należy jednak pamiętać, że w większości przypadków użycie metody getData () jest lepszym wyborem, ponieważ zwraca ona dane (zwykle obiekt) po ich przekształceniu przez framework formularza.
Jeśli chcesz uzyskać dostęp do tokena formularza, musisz użyć odpowiedzi Problematic,
$postData = $request->request->get('contact');
ponieważ getData()
usuwa element z tablicy
Symfony 2.3
od wersji 2.3 powinieneś używać handleRequest
zamiast bindRequest
:
$form->handleRequest($request);
zobacz dokumentację
Wartości postów formularza są przechowywane pod nazwą formularza w żądaniu. Na przykład, jeśli nadpisałeś
getName()
metodę ContactType (), aby zwracała „kontakt”, zrobiłbyś to:$postData = $request->request->get('contact'); $name_value = $postData['name'];
Jeśli nadal występują problemy, spróbuj robi
var_dump()
na$request->request->all()
zobaczyć wszystkie wartości pocztowych.źródło
getName()
, to nie ma sensu zakodować nazw na stałe:$request->request->get($form->getName());
to, co zadziałało, to używanie tego:
$data = $request->request->all(); $name = $data['form']['name'];
źródło
Jest jedna sztuczka z
ParameterBag::get()
metodą. Można ustawić$deep
parametr dotrue
i dostępu do wymaganej wartości głęboko zagnieżdżonych bez dodatkowej zmiennej:$request->request->get('form[some][deep][data]', null, true);
Masz również możliwość ustawienia wartości domyślnej (drugi parametr
get()
metody), co pozwala uniknąć zbędnegoisset($form['some']['deep']['data'])
wywołania.źródło
Dostęp do danych pola można uzyskać w kontrolerze za pomocą: Listingu 12-34
$form->get('dueDate')->getData();
Ponadto dane niezmapowanego pola można również bezpośrednio modyfikować: Listing 12-35
$form->get('dueDate')->setData(new \DateTime());
strona 164 książka symfony2 (wygenerowana 9 października 2013)
źródło
Uzyskuję dostęp do parametru ticketNumber dla mojego wieloczęściowego żądania pocztowego w następujący sposób.
$data = $request->request->all(); $ticketNumber = $data["ticketNumber"];
źródło
Myślę, że aby uzyskać dane zapytania, powiązane i zatwierdzone przez obiekt formularza, należy użyć:
$form->getClientData();
źródło
Symfony doc aby uzyskać dane żądania
$ content = $ request-> getContent ();
źródło
Jeśli jesteś nowicjuszem, witaj w Symfony2, projekcie open source, więc jeśli chcesz się dużo nauczyć, możesz otworzyć źródło!
Z „Form.php”:
getData () getNormData () getViewData ()
Więcej szczegółów znajdziesz w tym pliku.
źródło
$form->getData();
Wiem, że ludzie są leniwi i chcą rozwiązania bez zastanowienia ;-(