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

[SOLUCIONADO] No puedo guardar datos en una entidad con jquery-ajax

Estas en el tema de No puedo guardar datos en una entidad con jquery-ajax en el foro de Symfony en Foros del Web. Buen dia amigos, tengo una entidad llamada abcMembers en la cual por medio del CRUD puedo editar los campos que ahi se encuentran, tambien tengo ...
  #1 (permalink)  
Antiguo 10/02/2014, 10:12
 
Fecha de Ingreso: septiembre-2013
Mensajes: 61
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta No puedo guardar datos en una entidad con jquery-ajax

Buen dia amigos, tengo una entidad llamada abcMembers en la cual por medio del CRUD puedo editar los campos que ahi se encuentran, tambien tengo una entidad llamada abcIdType que es donde defino los tipos de documentos que puede tener un miembro, estas dos entidades tienen una relacion de muchos a muchos con AbcMembersPersonalId que es donde necesito guardar el tipo y numero de documento del miembro.
En el archivo edit.html.twig de la Entidad AbcMembers esta el bloque "javascripts_foraneas" donde se raeliza la llamada Ajax y usando el firebug efectivamente verifico que se envian los datos.
Código HTML:
Ver original
  1. {% extends "ABCPreEnrollmentBundle:EnrollLayout:plantillaTabs.html.twig" %}
  2.  
  3. {% block body -%}
  4.  
  5. {{form_start(edit_form)}}
  6.     {{form_errors(edit_form)}}
  7.     <div class="row-fluid">
  8.     <div class="span12"><h4><center>GENERAL INFORMATION - INFORMACION GENERAL</center></h4></div>
  9.     </div>
  10.     <div class="row-fluid">
  11.         <div class="span12">
  12.             <div class="span4 offset2">
  13.                 {{form_row(edit_form.lastname, {'attr':{'class': 'span10'}})}}
  14.                 {{form_row(edit_form.firstname, {'attr':{'class': 'span6'}})}}
  15.                 {{form_row(edit_form.middlename, {'attr':{'class': 'span6'}})}}
  16.                    
  17.                 {{form_errors(edit_form.birthdate)}}
  18.                 {{form_label(edit_form.birthdate)}}    
  19.                 {{form_widget(edit_form.birthdate.day, {'attr':{'class': 'span3'}})}}
  20.                 {{form_widget(edit_form.birthdate.month, {'attr':{'class': 'span3'}})}}
  21.                 {{form_widget(edit_form.birthdate.year, {'attr':{'class': 'span3'}})}}
  22.                
  23.                 {{form_row(edit_form.gender)}}    
  24.             </div>
  25.             <div class="span6">
  26.                 {{form_row(edit_form.placeOfBirthdate, {'attr':{'class': 'span8'}})}}
  27.                 {{form_row(edit_form.sitewideLogin, {'attr':{'class': 'span4'}})}}
  28.                 {{form_row(edit_form.document, {'attr':{'class':'span4'}})}}
  29.                 <label class="control-label">ID</label>
  30.                 <input type="text" class="span4" id="document_id">
  31.                 <label class="control-label">NIT</label>
  32.                 <input type="text" class="span4" id="nit">
  33.                 <label class="control-label">Mobile Phone</label>
  34.                 <input type="text" class="span4" id="mobile_phone">
  35.                 <input type="hidden" id="member_id" name="nombre" value={{entity.id}}>
  36.                 <br>
  37.             </div>  
  38.         </div>        
  39.     </div>    
  40.     <div class="modal-footer">
  41.         {{form_widget(edit_form.submit, {'attr':{'class':'btn btn-primary'}})}}
  42.     </div>
  43.  
  44. {{form_end(edit_form)}}
  45.  
  46. {% block javascripts_foraneas %}
  47. $(document).ready(function(){  
  48. });
  49. $('#document_id').blur(function(){
  50.         $.post(
  51.                 '{{path('preenrollment_personalid_documents')}}',
  52.                 {
  53.                    document_type:$("#abc_preenrollmentbundle_abcmembers_document").val(),
  54.                    document_id  :$("#document_id").val(),
  55.                    member_id    :$("#member_id").val()
  56.                 }
  57.               ).done(function(data){
  58.                  $("#mobile_phone").html(data);    
  59.               });
  60. });
  61. {%endblock%}
  62. {% endblock %}
Ahora les muestro el codigo del controlador de la Entidad ABCMEmbersPersonalIdController, donde recibo los parametros via Ajax y Setteo los valores a la entidad que necesito persistir, pero no me guarda nada. Alguna sugerencia de que estoy haciendo mal ??
Código PHP:
 /**
     * Lists all AbcMembersPersonalId entities.
     *
     * @Route("/documents", name="preenrollment_personalid_documents")
     * @Method("POST")
     * @Template()
     */
    
public function documentsAction(Request $request)
    {
    
$isAjax $this->get('Request')->isXMLhttpRequest();
    if(
$isAjax){
        
$document_type =$this->get('request')->request->get('document_type');
        
$document_id =$this->get('request')->request->get('document_id');
        
$member_id =$this->get('request')->request->get('member_id');
        
        
$em $this->getDoctrine()->getManager();
        
        
$entity = new AbcMembersPersonalId();
        
$entity->setIdType($document_type);
        
$entity->setMember($member_id);
        
$entity->setDocument($document_id);
        
$entity->setCreatedDate(new DateTime()); 
  
        
$validator $this->get('validator');
        
$errors $validator->validate($entity);
        
$resultado="";
        
var_dump($errors);
        if(
count($errors)==0){
            
$em->persist($entity);
            
$em->flush();
            
$resultado="exito";
        }else{
            
$resultado="fracaso";
             }
        
$response = new JsonResponse();     
        return 
$response->setData($resultado);
        
        }else{
             return new 
Response('0');
        }
    } 
Tambien muestro el codigo de la entidad AbcMembersPersonalId
Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace ABC\PreEnrollmentBundle\Entity;
  4.  
  5. use Doctrine\ORM\Mapping as ORM;
  6.  
  7. /**
  8.  * AbcMembersPersonalId
  9.  *
  10.  * @ORM\Table(name="abc_members_personal_id")
  11.  * @ORM\Entity(repositoryClass="ABC\PreEnrollmentBundle\Repository\AbcMembersPersonalIdRepository")
  12.  */
  13. class AbcMembersPersonalId
  14. {
  15.     /**
  16.      * @var integer
  17.      *
  18.      * @ORM\Column(name="id", type="integer", nullable=false)
  19.      * @ORM\Id
  20.      * @ORM\GeneratedValue(strategy="IDENTITY")
  21.      */
  22.     private $id;
  23.  
  24.     /**
  25.      * @var string
  26.      *
  27.      * @ORM\Column(name="document", type="string", length=45, nullable=false)
  28.      */
  29.     private $document;
  30.  
  31.     /**
  32.      * @var \DateTime
  33.      *
  34.      * @ORM\Column(name="created_date", type="datetime", nullable=false)
  35.      */
  36.     private $createdDate;
  37.  
  38.     /**
  39.      * @var \AbcIdType
  40.      *
  41.      * @ORM\ManyToOne(targetEntity="AbcIdType")
  42.      * @ORM\JoinColumns({
  43.      *   @ORM\JoinColumn(name="id_type", referencedColumnName="id")
  44.      * })
  45.      */
  46.     private $idType;
  47.  
  48.     /**
  49.      * @var \AbcMembers
  50.      *
  51.      * @ORM\ManyToOne(targetEntity="AbcMembers")
  52.      * @ORM\JoinColumns({
  53.      *   @ORM\JoinColumn(name="member", referencedColumnName="id")
  54.      * })
  55.      */
  56.     private $member;
  57.  
  58.  
  59.  
  60.     /**
  61.      * Get id
  62.      *
  63.      * @return integer
  64.      */
  65.     public function getId()
  66.     {
  67.         return $this->id;
  68.     }
  69.  
  70.     /**
  71.      * Set document
  72.      *
  73.      * @param string $document
  74.      * @return AbcMembersPersonalId
  75.      */
  76.     public function setDocument($document)
  77.     {
  78.         $this->document = $document;
  79.    
  80.         return $this;
  81.     }
  82.  
  83.     /**
  84.      * Get document
  85.      *
  86.      * @return string
  87.      */
  88.     public function getDocument()
  89.     {
  90.         return $this->document;
  91.     }
  92.  
  93.     /**
  94.      * Set createdDate
  95.      *
  96.      * @param \DateTime $createdDate
  97.      * @return AbcMembersPersonalId
  98.      */
  99.     public function setCreatedDate($createdDate)
  100.     {
  101.         $this->createdDate = $createdDate;
  102.    
  103.         return $this;
  104.     }
  105.  
  106.     /**
  107.      * Get createdDate
  108.      *
  109.      * @return \DateTime
  110.      */
  111.     public function getCreatedDate()
  112.     {
  113.         return $this->createdDate;
  114.     }
  115.  
  116.     /**
  117.      * Set idType
  118.      *
  119.      * @param \ABC\PreEnrollmentBundle\Entity\AbcIdType $idType
  120.      * @return AbcMembersPersonalId
  121.      */
  122.     public function setIdType(\ABC\PreEnrollmentBundle\Entity\AbcIdType $idType = null)
  123.     {
  124.         $this->idType = $idType;
  125.    
  126.         return $this;
  127.     }
  128.  
  129.     /**
  130.      * Get idType
  131.      *
  132.      * @return \ABC\PreEnrollmentBundle\Entity\AbcIdType
  133.      */
  134.     public function getIdType()
  135.     {
  136.         return $this->idType;
  137.     }
  138.  
  139.     /**
  140.      * Set member
  141.      *
  142.      * @param \ABC\PreEnrollmentBundle\Entity\AbcMembers $member
  143.      * @return AbcMembersPersonalId
  144.      */
  145.     public function setMember(\ABC\PreEnrollmentBundle\Entity\AbcMembers $member = null)
  146.     {
  147.         $this->member = $member;
  148.    
  149.         return $this;
  150.     }
  151.  
  152.     /**
  153.      * Get member
  154.      *
  155.      * @return \ABC\PreEnrollmentBundle\Entity\AbcMembers
  156.      */
  157.     public function getMember()
  158.     {
  159.         return $this->member;
  160.     }
  161. }
De ante mano les agradezco su valiosa ayuda.

Última edición por carlosml08; 10/02/2014 a las 10:21
  #2 (permalink)  
Antiguo 10/02/2014, 15:23
 
Fecha de Ingreso: septiembre-2013
Mensajes: 61
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: No puedo guardar datos en una entidad con jquery-ajax

Lo que sucedia es que la entidad AbcMembersPersonaId tiene dos atributos que son foraneos por lo tanto en la entidad se trabajan como OBJETOS, asi que les dejo el controlador como me quedo funcionando.
Código PHP:
public function documentsAction(Request $request)
    { 
    
$isAjax $this->get('Request')->isXMLhttpRequest();
    if(
$isAjax){ 
        
$document_type =$this->get('request')->request->get('document_type');
        
$document_id =$this->get('request')->request->get('document_id');
        
$member_id =$this->get('request')->request->get('member_id');
        
//abc_id_type
        
$em $this->getDoctrine()->getManager();
        
$abc_id_type $em->getRepository('ABCPreEnrollmentBundle:AbcIdType')->find($document_type);
        
//abc_members
        
$abc_members $em->getRepository('ABCPreEnrollmentBundle:AbcMembers')->find($member_id);
        
//abc_members_personal_id
        
$entity = new AbcMembersPersonalId();
        
$entity->setDocument($document_id);
        
$entity->setCreatedDate(new DateTime()); 
        
$entity->setIdType($abc_id_type);
        
$entity->setMember($abc_members);
        
$validator $this->get('validator');
        
$errors $validator->validate($entity);
        
var_dump($errors);
        if(
count($errors)==0){      
            
$em->persist($entity);
            
$em->flush();
        }else{
            
             }
            return new 
Response('1');
        
        }else{
             return new 
Response('0');
        }
    } 

Etiquetas: jquery-ajax, symfony2
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 18:17.