2015-11-11 1 views
3

J'ai une table qui contient des informations par exemple "ID", "Category", "Name" et "Action". Maintenant, je veux améliorer la table avec des cases à cocher qui permet à l'utilisateur de choisir plusieurs lignes et de les supprimer en une seule étape.Symfony2 Expaned table avec cases à cocher

Mon problème: J'ai créé un formulaire avec le formulaire constructeur:

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('id', 'entity', array(
       'required' => false, 
       'class' => 'AppBundle:Task', 
       'property' => 'id', 
       'multiple' => true, 
       'expanded' => true 
      )) 
      ->add('add', 'submit', array('label' => 'Add')); 
    } 

Ce formulaire est envoyé à la brindille-html avec la table qui contient les données de la table.

{% if table|length > 0 %} 
     {{ form_start(addForm) }} 
     {{ form_errors(addForm) }} 
     <table class='result' border=1> 
      <th></th> 
      <th>ID</th> 
      <th>Category</th> 
      <th>Name</th> 
      <th>Action</th> 
      {% for item in table %} 
       <tr> 
        <td> 
        {% for entity in addForm.id %} 
         {% if entity.vars.value == item.id %} 
          {{ form_widget(entity.vars.form) }} 
         {% endif %} 
        {% endfor %} 
        </td> 
        <td>{{ item.id }}</td> 
        <td>{{ item.category }}</td> 
        <td>{{ item.name }}</td> 
        <td>{{ item.action }}</td> 
       </tr> 
      {% endfor %} 
     </table> 

Comme vous pouvez le voir ma solution doit chercher dans une boucle pour l'ID correcte de la forme-élément et placez-les.

Mon problème maintenant: Je ne me sens pas à l'aise avec cette solution - y a-t-il un moyen plus facile d'afficher une table contenant plusieurs colonnes et cases à cocher?

Merci à l'avance

EDIT:

ont également le problème que je reçois l'erreur suivante après avoir sélectionné des cases à cocher:

Neither the property "id" nor one of the methods "addId()"/"removeId()", "setId()", "id()", "__set()" or "__call()" exist and have public access in class "AppBundle\Entity\XXXXXX". 

Répondre

0

Peut-être que vous devriez mieux utiliser le collection form type plutôt l'entité type car vous pourrez utiliser un formulaire personnalisé et un modèle de brindille pour chaque enregistrement de la table de base de données. Dans ce explanation, vous apprendrez comment supprimer ou ajouter une ligne. Ajout de cases à cocher pour fournir des actions par lots sera alors une solution javascript supplémentaire

+1

Votre indice m'a aidé beaucoup - merci ... – Atreides78