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

Problema con el collection de symfony2

Estas en el tema de Problema con el collection de symfony2 en el foro de Symfony en Foros del Web. Buen dia amigos, tengo un formulario y dentro de el tengo un collection el cual me esta imprimiendo el numero 0 de mas cuando yo ...
  #1 (permalink)  
Antiguo 11/10/2013, 11:48
 
Fecha de Ingreso: septiembre-2013
Mensajes: 61
Antigüedad: 11 años, 3 meses
Puntos: 0
Problema con el collection de symfony2

Buen dia amigos, tengo un formulario y dentro de el tengo un collection el cual me esta imprimiendo el numero 0 de mas cuando yo no lo estoy mandando a imprimir.
Adjunto como he desarrollado el codigo:
Tengo el archivo del formulario y al final tengo el collection llamado 'tribe' :
Código PHP:
<?php

namespace ABCIsystemBundleForm
;

use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;
use 
SymfonyComponentOptionsResolverOptionsResolverInterface;

use 
ABCIsystemBundleEntityAbcMembersGroups;
use 
ABCIsystemBundleFormAbcMembersGroupsType;

use 
ABCIsystemBundleEntityAbcMemberMediaCommunication;
use 
ABCIsystemBundleFormAbcMemberMediaCommunicationType;


class 
AbcMembersStudentType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
            
->add('idCard','text',array('label'=>'IDCARD','read_only'=>true))
            ->
add('admonCode','text',array('label'=>'ADMON CODE','required'=>false))
            ->
add('lastname','text',array('label'=>'Lastname *'))
            ->
add('firstname','text',array('label'=>'Fistname *'))
            ->
add('middlename','text',array('label'=>'Middlename','required'=>false))
            ->
add('birthdate''date', array(
                                
'widget' => 'single_text',
                                
'format' => 'dd-MM-yyyy'))
            ->
add('gender','choice',array(
                
'label'=>'Choose a gender *',
                
'empty_value' => 'Choose a gender',
                
'choices'=> array(
                
'female' => 'Female'
                
'male' => 'Male',
            )))
            ->
add('placeOfBirthdate')
            ->
add('nickname')
            ->
add('login','text',array('read_only'=>true))
            ->
add('sitewideLogin')
            ->
add('status','choice',array(
                
'label'=>'Choose an Status *',
                
'empty_value' => 'Choose an option',
                
'choices'=> array(
                
'active' => 'Active'
                
'no_active' => 'No Active',
        )))
            
//->add('createdDate')
            //->add('password')
            //->add('salt')
            
->add('saludation','entity',
            array(
                
'label'=>'Saludation *',
                
'class'=>'ABCIsystemBundle:AbcSadulation',
                
'property'=>'abbreviationEn',
         ))
             ->
add('tribe''collection', array(
                
'type'           => new AbcStudentsType(),
                
'label'          => false,
                
'allow_add'    => false,
                
'allow_delete' => false,
                
'by_reference' => true,
              ))
       ;
    }

    public function 
setDefaultOptions(OptionsResolverInterface $resolver)
    {
        
$resolver->setDefaults(array(
            
'data_class' => 'ABC\IsystemBundle\Entity\AbcMembers'
        
));
    }

    public function 
getName()
    {
        return 
'abc_isystembundle_abcmembersstudenttype';
    }
}
Tengo el formulario llamado AbcStudentsType.php
Código PHP:
<?php

namespace ABCIsystemBundleForm
;

use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;
use 
SymfonyComponentOptionsResolverOptionsResolverInterface;

class 
AbcStudentsType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
   
/*       ->add('classYear')
            ->add('createdDate')
            ->add('idCourseSubsesion')
            ->add('tribe')
            ->add('member') */
            
->add('tribe','entity'
            array(  
                
'class'=>'ABCIsystemBundle:AbcTribe',
                                
'label'=>'Tribe *',
                
'property'=>'name',  
            ))  
            ->
add('classYear','text',array('label'=>'Class year *'))  
        ;  
    }

    public function 
setDefaultOptions(OptionsResolverInterface $resolver)
    {
        
$resolver->setDefaults(array(
            
'data_class' => 'ABC\IsystemBundle\Entity\AbcStudents'
        
));
    }

    public function 
getName()
    {
        return 
'abc_isystembundle_abcstudentstype';
    }
}
Ahorra cuando veo el formulario en el navegador me aparece lo siguiente:
0
Tribe *
(Una lista desplegable)
Class year *
(Un text)

Entonces en twig no mando a imprimir ese "0" pero no se porque me lo esta imprimiendo.
  #2 (permalink)  
Antiguo 11/10/2013, 16:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Problema con el collection de symfony2

Como estas haciendo el render ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 12/10/2013, 07:55
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 2 meses
Puntos: 24
Respuesta: Problema con el collection de symfony2

Si no me equivoco es el label de la coleccion (revisa el html para asegurarte), deberias evitar que se renderice
  #4 (permalink)  
Antiguo 14/10/2013, 08:51
 
Fecha de Ingreso: septiembre-2013
Mensajes: 61
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Problema con el collection de symfony2

Contestando sus preguntas tengo un archivo en Twig llamado memberWidgetBlocks.html.twig, donde tengo el siguiente macro:
Código HTML:
{% macro tribe(form) %}
  <div class="row-fluid">
      <div class="span6">
        <div class="span12"><h3>Student</h3>
         {{ form_widget(form.tribe) }}
       
        </div> 
       </div>
  </div>
{% endmacro  %}
Posteriormente tengo el archivo editStudent.html.twig donde importo lo del archivo anterior.
Código HTML:
{% block contenido %}
{% import "ABCIsystemBundle:AbcMembers:memberWidgetBlocks.html.twig" as frmMember %}
{% import "ABCIsystemBundle:AbcMembers:tool.html.twig" as tool %}
<h3>{{block('title')}}</h3>

{{ form_start(form) }} 
   <div class="form-actions">
     <p>
       <a href="{{ path('isystem_admin_members') }}" class="btn">Back to the list</a>
       <button type="submit" class="btn btn-primary" > Update </button>
     </p>
   </div> <!-- buttones -->
  
   <div class="tabbable"> <!-- Only required for left/right tabs -->
     <ul class="nav nav-tabs">
        <li class="active"><a href="#tab1" data-toggle="tab">Basic Details</a></li>
        <li><a href="#tab2" data-toggle="tab">Resistration</a></li>
        <li><a href="#tab2" data-toggle="tab">Parents</a></li>
     </ul>
     <div class="tab-content">
        <div class="tab-pane active" id="tab1">
        {{frmMember.basic(form)}}  
        {{frmMember.tribe(form)}}
       </div>
       <div class="tab-pane" id="tab2">    
       </div>     
       <div class="tab-pane" id="tab3">
       </div>
     </div>
   </div>
   {#{{ form_rest(form) }}  
   {{ form_end(form) }} #}
   {{frmMember.photoModal()}}
   {{tool.modal()}}
</form> 
Como pueden verificar en el codigo tengo comentada las lineas {#{{ form_rest(form) }} y {{ form_end(form) }} #} para que no me renderize todos los campos del formulario pero siempre me esta rendezando todo!! Asi que siempre me sigue mostrando el 0.

Última edición por carlosml08; 14/10/2013 a las 11:04
  #5 (permalink)  
Antiguo 16/10/2013, 17:02
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 2 meses
Puntos: 24
Respuesta: Problema con el collection de symfony2

Lo que hago yo es redefinir el bloque label correspondiente asi

Código twig:
Ver original
  1. {% block _propiedades_propiedades_entry_label %}
  2. {% endblock %}

El html con los 0,1,... es este:
Código HTML:
Ver original
  1. ...
  2. <div>
  3.     <label class="required">0</label>
  4.     <div class="team-collection" id="propiedades_propiedades_0">
  5.         <div>
  6.             <label for="propiedades_propiedades_0_piso">Piso</label>
  7.             <input type="text" value="1" name="propiedades[propiedades][0][piso]" id="propiedades_propiedades_0_piso">
  8.         </div>
  9.         <div>
  10.             <label for="propiedades_propiedades_0_depto">Depto</label>
  11.             <input type="text" value="A" name="propiedades[propiedades][0][depto]" id="propiedades_propiedades_0_depto">
  12.         </div>
  13.         <div>
  14.             <label for="propiedades_propiedades_0_otros">Otros</label>
  15.             <input type="text" value="Local 1" name="propiedades[propiedades][0][otros]" id="propiedades_propiedades_0_otros">
  16.         </div>
  17.         <div>
  18.             <label for="propiedades_propiedades_0_porcentualidadA">Porcentualidad a</label>
  19.             <input type="text" value="0.500000000000000" name="propiedades[propiedades][0][porcentualidadA]" id="propiedades_propiedades_0_porcentualidadA">
  20.         </div>
  21.     </div>
  22. </div>
  23. <div>
  24.     <label class="required">1</label>
  25.     <div class="team-collection" id="propiedades_propiedades_1">
  26.         <div>
  27.             <label for="propiedades_propiedades_1_piso">Piso</label>
  28.             <input type="text" value="1" name="propiedades[propiedades][1][piso]" id="propiedades_propiedades_1_piso">
  29.         </div>
  30.         <div>
  31.             <label for="propiedades_propiedades_1_depto">Depto</label>
  32.             <input type="text" value="B" name="propiedades[propiedades][1][depto]" id="propiedades_propiedades_1_depto">
  33.         </div>
  34.         <div>
  35.             <label for="propiedades_propiedades_1_otros">Otros</label>
  36.             <input type="text" value="Local 2" name="propiedades[propiedades][1][otros]" id="propiedades_propiedades_1_otros">
  37.         </div>
  38.         <div>
  39.             <label for="propiedades_propiedades_1_porcentualidadA">Porcentualidad a</label>
  40.             <input type="text" value="0.500000000000000" name="propiedades[propiedades][1][porcentualidadA]" id="propiedades_propiedades_1_porcentualidadA">
  41.         </div>
  42.     </div>
  43. </div>
  44. ...


Si quisiera reemplazar el label del 'piso' el bloque quedaria asi:

Código twig:
Ver original
  1. {% block _propiedades_propiedades_entry_piso_label %}
  2. {% endblock %}

Etiquetas: collection, 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 20:57.