Foros del Web » Programando para Internet » PHP » Symfony »

recogiendo datos de un submit en un formulario.

Estas en el tema de recogiendo datos de un submit en un formulario. en el foro de Symfony en Foros del Web. porque en un formulario puedo recoger los datos asi : $form->bind($request); $data = $form->getData(); $ids_tipos = $data['hdnIdsSeleccionados']; y en otro,tengo que hacerlo asi porque lo ...
  #1 (permalink)  
Antiguo 18/11/2015, 06:03
 
Fecha de Ingreso: noviembre-2015
Mensajes: 20
Antigüedad: 9 años
Puntos: 1
recogiendo datos de un submit en un formulario.

porque en un formulario puedo recoger los datos asi :

$form->bind($request);
$data = $form->getData();
$ids_tipos = $data['hdnIdsSeleccionados'];

y en otro,tengo que hacerlo asi porque lo anterior devuelve un array vacio?

$par = $request->request->all();
$id_pobla = $par['mi_empresa_registration_P1']['poblacion'];

esto me devuelve $data vacio para el segundo caso :

$form->bind($request);
$data = $form->getData();
$id_pobla = $data['poblacion']


la estructura $form (en el controlador) no es ni parecida en ninguno de los 2 casos,y la vista esta generando formularios que tienen diferentes campos,pero nada mas,devería devolverme una estructura para $form bastante parecida en los 2 casos,(salvo los campos incluidos claro),en un formulario tendría unos y en el otro otros,pero no cambiarme la estructura ni la manera de acceder.

PD : en el primer formulario no estoy usando un type y en el segundo si.

Gracias.
  #2 (permalink)  
Antiguo 18/11/2015, 08:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: recogiendo datos de un submit en un formulario.

Puedes publicar tus controladores ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 19/11/2015, 02:21
 
Fecha de Ingreso: noviembre-2015
Mensajes: 20
Antigüedad: 9 años
Puntos: 1
Respuesta: recogiendo datos de un submit en un formulario.

public function registerEmpresaP1Action() {
$request = $this->getRequest();

$usuario = new Usuario();
$usuario->setEsEmpresa(true);
$form = $this->createForm(new RegistrationFormEmpresaP1Type('........\Entity\Usu ario'), $usuario);

if ($request->getMethod() == 'POST') {
$par = $request->request->all();
$id_pobla = $par['mi_empresa_registration_P1']['poblacion'];
$em = $this->getDoctrine()->getManager();
$poblacion = $em->getRepository('.........:Poblaciones')->find($id_pobla);

$par['mi_empresa_registration_P1']['poblacion'] = $poblacion;
$request->request->replace($par);
$form->bind($request);

if ($form->isValid()) {
$em->persist($usuario);
$em->flush();
$this->get('session')->set('id_usuario', $usuario->getId());

$request->setMethod("GET");
return $this->registerEmpresaP2Action();
}
}
return $this->render('.........:MainFooter.html.twig', array('form' => $form->createView(), 'Pantalla1' => true));
}



public function registerEmpresaP2Action() {
$request = $this->getRequest();
$defaultData = array('message' => 'Formulario de tipos de trabajo');
$form = $this->createFormBuilder($defaultData)->getForm();
$form->add('hdnIdsSeleccionados', 'hidden', array(
'constraints' => array(new NotBlank())));

if ($request->getMethod() == 'POST') {
$form->bind($request);

if ($form->isValid()) {
$id_usuario = $this->get('session')->get('id_usuario');
$em = $this->getDoctrine()->getManager();
$usuario = $em->getRepository('..........:Usuario')->find($id_usuario);

$data = $form->getData();
$ids_tipos = $data['hdnIdsSeleccionados'];
$ids_tipos_arr = explode(",", $ids_tipos);

foreach ($ids_tipos_arr as $id_tipo){
$tipoNivel3 = $em->getRepository('..........:TrabajosTiposNivel3')->find($id_tipo);
$usuario->addTrabajosTiposNivel3($tipoNivel3);
}

$em->persist($usuario);
$em->flush();

$request->setMethod("GET");
return $this->registerEmpresaP3Action();
}
}
$em = $this->getDoctrine()->getManager();
$trabajosTiposN1 = $em->getRepository('.........:TrabajosTiposNivel1')->findAll(array('nombre' => 'ASC'));
return $this->render('...........:MainFooter.html.twig', array('form' => $form->createView(), 'trabajosTiposN1' => $trabajosTiposN1));
}

Estas son las 2 funciones del controlador,se trata de dos formularios,cuando uno esta completo y valido,guardamos y llamamos al siguiente.


Gracias.
  #4 (permalink)  
Antiguo 22/11/2015, 12:12
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: recogiendo datos de un submit en un formulario.

La razón es que antes de hacer un form->getData() debiste de haber echo un form->bind() este ultimo método llena el formulario con los datos que vienen en del request y que corresponden con el formulario.
Te recomiendo que leas la documentación oficial: http://symfony.com/doc/current/book/...rm-submissions
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 23/11/2015, 03:20
 
Fecha de Ingreso: noviembre-2015
Mensajes: 20
Antigüedad: 9 años
Puntos: 1
Respuesta: recogiendo datos de un submit en un formulario.

No,no es eso,si te fijas en el primer mensaje pongo :

$form->bind($request);
$data = $form->getData();
$id_pobla = $data['poblacion']

y $data se me queda vacío.
es decir,esto tampoco funciona:

public function registerEmpresaP1Action() {
$request = $this->getRequest();

$usuario = new Usuario();
$usuario->setEsEmpresa(true);
$form = $this->createForm(new RegistrationFormEmpresaP1Type('........\Entity\Usu ario'), $usuario);

if ($request->getMethod() == 'POST') {

$form->bind($request);
$data = $form->getData();
$id_pobla = $data['poblacion']

if ($form->isValid()) {
$em->persist($usuario);
$em->flush();
$this->get('session')->set('id_usuario', $usuario->getId());

$request->setMethod("GET");
return $this->registerEmpresaP2Action();
}
}
return $this->render('.........:MainFooter.html.twig', array('form' => $form->createView(), 'Pantalla1' => true));
}

y por eso tuve que pegarme para extraerlo de la request asi :

$par = $request->request->all();
$id_pobla = $par['mi_empresa_registration_P1']['poblacion'];




Gracias y saludos.
  #6 (permalink)  
Antiguo 23/11/2015, 12:12
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: recogiendo datos de un submit en un formulario.

Si no te estan llegando los datos depura el código para saber por que no te llega esa información. También procura darle resaltado al código que agregas usando el combo que dice Highlight.
Un detalle importante; esta parte en tu código no va funcionar como esperas:
Código PHP:
Ver original
  1. if ($form->isValid()) {
  2. $em->persist($usuario);
  3. $em->flush();
  4. $this->get('session')->set('id_usuario', $usuario->getId());
  5.  
  6. $request->setMethod("GET");
  7. return $this->registerEmpresaP2Action();
  8. }
Tienes que direccionar a la ruta que maneja el método registerEmpresaP2Action
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: submit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:25.