Symfony 2.2
esta solução está obsoleta desde 2.3 e será removida em 3.0, consulte a documentação
$form->getData();
fornece uma matriz para os parâmetros do formulário
do livro symfony2, página 162 (Capítulo 12: Formulários)
[...] às vezes, você pode querer apenas usar um formulário sem classe e obter de volta um array dos dados enviados. Na verdade, isso é muito fácil:
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
}
Você também pode acessar os valores POST (neste caso, "nome") diretamente por meio do objeto de solicitação, assim:
$this->get('request')->request->get('name');
Esteja ciente, no entanto, que na maioria dos casos, usar o método getData () é uma escolha melhor, já que ele retorna os dados (geralmente um objeto) após terem sido transformados pela estrutura do formulário.
Quando você deseja acessar o token do formulário, você deve usar a resposta de Problemática
$postData = $request->request->get('contact');
porque getData()
remove o elemento do array
Symfony 2.3
desde 2.3 você deve usar em handleRequest
vez de bindRequest
:
$form->handleRequest($request);
veja a documentação
Os valores de postagem do formulário são armazenados com o nome do formulário na solicitação. Por exemplo, se você substituiu o
getName()
método de ContactType () para retornar "contato", faria o seguinte:Se você ainda tiver problemas, tente fazer uma
var_dump()
em$request->request->all()
ver todos os valores pós.fonte
getName()
, faz sentido não codificar os nomes:$request->request->get($form->getName());
o que funcionou para mim foi usar isto:
fonte
Existe um truque com o
ParameterBag::get()
método. Você pode definir$deep
parâmetros paratrue
e acesso o valor aninhada profunda necessário sem variável adicional:Além disso, você tem a possibilidade de definir um valor padrão (2º parâmetro do
get()
método), pode evitar aisset($form['some']['deep']['data'])
chamada redundante .fonte
Os dados de campo podem ser acessados em um controlador com: Listagem 12-34
Além disso, os dados de um campo não mapeado também podem ser modificados diretamente: Listagem 12-35
página 164 livro symfony2 (gerado em 9 de outubro de 2013)
fonte
Eu acesso o parâmetro ticketNumber para minha solicitação de postagem multiparte da seguinte maneira.
fonte
Acho que, para obter os dados da solicitação, vinculados e validados pelo objeto de formulário, você deve usar:
$form->getClientData();
fonte
Doc Symfony para obter os dados do pedido
$ content = $ request-> getContent ();
fonte
Se você é um novato, bem-vindo ao Symfony2, um projeto de código aberto, então se você quiser aprender muito, pode abrir o código!
De "Form.php":
getData () getNormData () getViewData ()
Você pode encontrar mais detalhes neste arquivo.
fonte
$form->getData();
Eu sei que as pessoas são preguiçosas e querem uma solução sem pensar um pouco ;-(