Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/08/2012, 18:29
yekamus
 
Fecha de Ingreso: agosto-2012
Mensajes: 6
Antigüedad: 12 años, 3 meses
Puntos: 0
guardar los datos del usuario junto al Formulario

Estimados Soy nuevo en esto de Symfony, les cuento tengo dos tablas usuario e ingresos y estoy haciendo un formulario para ingresar los ingresos de un usuario, por lo que cada usuario ingresara sus propios ingresos, lo que necesito hacer es mantener el ID del usuario y enviarlo a la base de datos junto con el formulario, antes con PHP puro sabia hacerlo, pero ahora con Symfony se me esta complicando mucho esto....Agradesco desde ya la Ayuda, gracias...



Código:
EL FORMULARIO

namespace scge\scgeBundle\Form\Usuarios;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

use scge\scgeBundle\Validator\Constraints\DNI;

class IngresosType extends AbstractType
{

    public function buildForm(FormBuilder $builder, array $options)
    {
        
                
        $builder->add('numero', 'text', array('label' => 'Numero'));
        $builder->add('RUT');
       
        $builder->add('plancta_id', 'entity',
            array('label' => 'Plan Cuenta',
                'class' => 'scgeBundle:PlanCta',
                'property' => 'nombre',
                'required' => 'true',
                 'query_builder' => function (\Doctrine\ORM\EntityRepository $repository)
                 {
                     return $repository->createQueryBuilder('p')
                            ->where('p.codigo like :codigo')
                            ->setParameter('codigo', '1%');
                 }
                )
              );
                
        $builder->add('tipodoc', 'entity',
            array('label' => 'Tipo Documento',
                'class' => 'scgeBundle:TipoDoc',
                'property' => 'descripcion',
                'required' => 'true',
                 'query_builder' => function (\Doctrine\ORM\EntityRepository $repository)
                 {
                     return $repository->createQueryBuilder('td')
                            ->where('td.tipo like :tipo')
                            ->setParameter('tipo', 'ingreso')
                            ;
                 }
                )
              );

        $builder->add('nombre','text', array('label' => 'Nombre '));
        $builder->add('rut', 'text', array('label' => 'Rut '));
        $builder->add('fecha');
        
        $builder->add('glosapago','textarea');
        $builder->add('monto', 'text');
       
        
    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'scge\scgeBundle\Entity\Ingreso',
        );
    }

    public function getName()
    {
        return 'nombre';
    }

}
Código:
EL CONTROLADOR

public function ingresoAction()
    {
        $form = $this->get('form.factory')->create(new IngresosType(), array());

        $request = $this->get('request');
        if ($request->getMethod() == 'POST') {
            $form->bindRequest($request);

            if ($form->isValid()) {

                // Mensaje para notificar al usuario que todo ha salido bien
                $session = $this->get('request')->getSession();
                $session->setFlash('notice', 'Usuario Creado Satisfactoriamente');
           
                $ingasto = new Ingreso();
    
                $ingastos = $form->getData();
                //$username = $this->getUser()->getUsername();
               
                            
                $ingasto->setCtacont($ingastos['plancta_id']);
                $ingasto->setEstado(0);
                $ingasto->setFecha($ingastos['fecha']);
                $ingasto->setGlosa($ingastos['glosapago']);
                $ingasto->setMonto($ingastos['monto']);
                $ingasto->setNombre($ingastos['nombre']);
                $ingasto->setNula(0);
                $ingasto->setNumero($ingastos['numero']);
                $ingasto->setRUT($ingastos['rut']);
                $ingasto->setTipodoc($ingastos['tipodoc']);
                $ingasto->setUsuario($username);
                     
             // Guardamos el objeto en base de datos
                $em = $this->get('doctrine')->getEntityManager();
                $em->persist($ingasto);
                $em->flush($ingasto);

                return $this->render('scgeBundle:Usuario:ingreso.html.twig', array('form' => $form->createView()));
            }
        }
        return $this->render('scgeBundle:Usuario:ingreso.html.twig', array('form' => $form->createView()));
    }

Código:
LA VISTA

{% extends "scgeBundle::layout.html.twig" %}

{% block title %}Ingreso de Donaciones{% endblock %}
{% block metadesc %}Donaciones{% endblock %}
{% block pageid 'ponencias' %}

{% block contenido %}
 {{ app.session.flash('id') }}
<h2>Ingreso de Donaciones</h2>


{{ form_errors(form) }}

<form action="{{ path('ingreso') }}" method="post" {{ form_enctype(form) }}>
      <div class="grid_6 alpha">
   
   {{form_rest(form)}}
   
 </div> 
  <input type="submit" value="Grabar" />  
</form>


{% endblock %}

{% block lateral %}


{% endblock %}