2015-06-27 97 views
1

我正在开发我的Symfony 2项目,并且正在做我的一种形式的树枝。我想知道如何检查我的表单中是否至少有一个选项。获取我在树枝中选择的内容

我的形式如下:

<?php 

namespace AdminBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

Class ProjetsType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $constructeur, array $options) 
    { 
     $constructeur 
     ->add('Ajouter', 'submit', array('label'=>'Ajouter un projet')) 
     ->add('Projet', 'entity', array(
      'label'=>false, 
      'class'=>'PublicBundle\Entity\Projet', 
      'property'=>'id' 
     )) 
     ->add('Modifier', 'submit') 
     ->add('Supprimer', 'submit'); 

     /*This is the way I do it if I pass my projects as a parameter*/ 
     /*if(!empty($options['choix'])) 
     { 
      $constructeur 
      ->add('Projet', 'choice', array('label'=>false, 'choices'=>$options['choix'])) 
      ->add('Modifier', 'submit') 
      ->add('Supprimer', 'submit'); 
     }*/ 
    } 

    public function getName() 
    { 

     return 'projets_type'; 

    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'choix' => null, 
     )); 
    } 
} 

我的模板看起来像这样

{{ form_start(formulaire) }} 
    {{ form_widget(formulaire.Ajouter) }} 
    {% if formulaire.Projet is defined %} 
     {{ form_widget(formulaire.Projet) }} 
     {{ form_widget(formulaire.Modifier) }} 
     {{ form_widget(formulaire.Supprimer) }} 
    {% endif %} 
{{ form_end(formulaire) }} 

我goald是,如果没有任何项目,只有“ajouter”(这是法语添加)按钮将出现。我以前曾经通过我的项目列表,我得到了一个其他函数,而我的表单只是添加了选择,如果至少有一个项目,但我被告知最好使用实体类型字段。使用实体类型字段可能会导致没有任何选项的选择字段。如果发生这种情况,我希望不显示选择和下面两个按钮。

所以我想最好的方法是检查选择是否至少包含一个选项,如果没有,请不要在我的模板中添加表单的那部分。我怎么做?

回答