Symfony 2.2
esta solución está en desuso desde 2.3 y se eliminará en 3.0, consulte la documentación
$form->getData();
le da una matriz para los parámetros del formulario
del libro de Symfony2, página 162 (Capítulo 12: Formularios)
[...] a veces, es posible que desee utilizar un formulario sin una clase y obtener una matriz de los datos enviados. Esto es realmente muy 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
}
También puede acceder a los valores POST (en este caso, "nombre") directamente a través del objeto de solicitud, así:
$this->get('request')->request->get('name');
Sin embargo, tenga en cuenta que, en la mayoría de los casos, usar el método getData () es una mejor opción, ya que devuelve los datos (generalmente un objeto) después de haber sido transformados por el marco del formulario.
Cuando desee acceder al token de formulario, debe usar la respuesta de Problematic
$postData = $request->request->get('contact');
porque getData()
elimina el elemento de la matriz
Symfony 2.3
desde 2.3 debería usar en handleRequest
lugar de bindRequest
:
$form->handleRequest($request);
ver documentación
Los valores de publicación del formulario se almacenan con el nombre del formulario en la solicitud. Por ejemplo, si anuló el
getName()
método de ContactType () para devolver "contacto", haría esto:Si todavía tiene problemas, trate de hacer un
var_dump()
sobre$request->request->all()
para ver todos los valores de correos.fuente
getName()
, entonces tiene sentido no codificar nombres:$request->request->get($form->getName());
lo que funcionó para mí fue usar esto:
fuente
Hay un truco con el
ParameterBag::get()
método. Puede establecer$deep
parámetros atrue
y el acceso al valor anidado profundidad requerida sin la variable adicional:También tiene la posibilidad de establecer un valor predeterminado (segundo parámetro del
get()
método), puede evitarisset($form['some']['deep']['data'])
llamadas redundantes .fuente
Se puede acceder a los datos de campo en un controlador con: Listado 12-34
Además, los datos de un campo no mapeado también se pueden modificar directamente: Listado 12-35
página 164 del libro symfony2 (generado el 9 de octubre de 2013)
fuente
Accedo al parámetro ticketNumber para mi solicitud de publicación de varias partes de la siguiente manera.
fuente
Creo que para obtener los datos de la solicitud, vinculados y validados por el objeto de formulario, debe usar:
$form->getClientData();
fuente
Symfony doc para obtener datos de solicitud
$ contenido = $ solicitud-> getContent ();
fuente
Si eres un novato, bienvenido a Symfony2, un proyecto de código abierto, así que si quieres aprender mucho, ¡puedes abrir el código fuente!
Desde "Form.php":
getData () getNormData () getViewData ()
Puede encontrar más detalles en este archivo.
fuente
$form->getData();
Sé que la gente es vaga y quiere una solución sin pensarlo un poco ;-(