簡體   English   中英

Symfony2:CollectionType表單

[英]Symfony2 : CollectionType Forms

我為帶有document(entity)的evenment實體創建了一個添加表單,因此我使用此鏈接https://symfony.com/doc/current/form/form_collections.html ,這是結果: 在此處輸入圖片說明 我的問題是如何從表單中刪除文檔ID?

EvenementType

 <?php namespace IcebergBundle\\Form; use Symfony\\Component\\Form\\AbstractType; use Symfony\\Component\\Form\\FormBuilderInterface; use Symfony\\Component\\OptionsResolver\\OptionsResolver; use Symfony\\Component\\Form\\Extension\\Core\\Type\\CollectionType; class EvenementType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('type', 'choice', array('label' => 'choisr le type', 'choices' => array('evenement' => 'Evenement', 'formation' => 'Formation'), 'choices_as_values' => false, )) ->add('titre','text', array('label' => 'Titre:', 'attr' => array('class' => 'form-control'))) ->add('description','text', array('label' => 'Descrption:', 'attr' => array('class' => 'form-control'))) ->add('datedebut', 'datetime', array('date_widget' => "single_text", 'time_widget' => "single_text",'label' => 'Date debut evenement:')) ->add('datefin', 'datetime', array('date_widget' => "single_text", 'time_widget' => "single_text",'label' => 'Date fin evenement:')) ->add('doc', CollectionType::class, array( 'label' => 'Document: ', 'entry_type' => DocumentType::class, 'allow_add' => true, 'allow_delete' => true, )) ->add('file','file',array('label' => 'Grande Image : ' )) ->add('file2','file',array('label' => 'Petite Image : ' )) ->getForm(); ; } /** * @param OptionsResolver $resolver */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'IcebergBundle\\Entity\\Evenement' )); } } 

EvenementController

  public function newAction(Request $request) { $evenement = new Evenement(); $doc= new Document(); $evenement->addDoc($doc); $form = $this->createForm('IcebergBundle\\Form\\EvenementType', $evenement); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $doc->upload(); $evenement->upload(); $evenement->upload2(); $em->persist($evenement); $em->flush(); $this->get('session')->getFlashBag()->set( 'success', array( 'title' => 'Modification avec sucssés !', 'message' => 'Evenement ajouté .','type'=>'success' ) ); return $this->redirectToRoute('evenement_show', array('id' => $evenement->getId())); } return $this->render('evenement/new.html.twig', array( 'evenement' => $evenement, 'form' => $form->createView(), )); } 

new.html.twig

 {% extends 'base_back.html.twig' %} {% block body %} {% for type, flashMessage in app.session.flashbag.all() %} <div class="alert alert-{{ flashMessage.type }} fade in"> <button class="close" data-dismiss="alert" type="button">×</button> {% if flashMessage.title is defined %} <strong>{{ flashMessage.title }}</strong> {{ flashMessage.message }} {% else %} {{ type }} {% endif %} </div> {% endfor %} <h1>Ajouter Evenement/Formation</h1> {{ form_start(form) }} {{ form_widget(form) }} <input class="btn btn-primary" type="submit" value="Ajouter" /> <a class="btn btn-default" href="{{ path('evenement_index') }}">Retourner à la liste<i class="glyphicon glyphicon-eye-open"></i></a> {{ form_end(form) }} {% endblock %} {% block javascripts %} <script src="https://code.jquery.com/jquery.js"></script> {% endblock %} 

文件類型

 <?php namespace IcebergBundle\\Form; use Symfony\\Component\\Form\\AbstractType; use Symfony\\Component\\Form\\FormBuilderInterface; use Symfony\\Component\\OptionsResolver\\OptionsResolver; class DocumentType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('titre','text', array('label' => 'Titre:', 'attr' => array('class' => 'form-control'))) ->add('file') ->getForm(); ; } /** * @param OptionsResolver $resolver */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'IcebergBundle\\Entity\\Document' )); } } 

可以嘗試:

'label' => 'Document:  ',
'entry_type' => DocumentType::class,
'allow_add' => true,
'allow_delete' => true,
'entry_options'  => array( 'label' => false )

希望這個能對您有所幫助

如果在“ Evenement”表單中添加此行->add('doc', CollectionType::class, array(... ,則將顯示文檔ID。

現在,如果您想在表單中顯示Document的titre屬性而不是id ,則在Document Entity中添加__tostring()函數,如下所示

 public function __toString(){
        return $this->getTitre();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM