2016-12-17 11 views
1

埋め込みフォームClientTarifaTypeは、別のものの中にClientTypeと呼ばれています。埋め込みフォーム(ClientTarifaType)には、Tarifasが既に存在する1つの選択フィールドがあります(ClientTarifaにはManyToMany関係があります)。選択フィールド付きのsymfony埋め込みフォーム

ClientType.php

 ->add('tarifas', CollectionType::class, array(
      'entry_type' => ClientTarifaType::class, 
      'allow_add' => true, 
      'allow_delete' => true, 
      'by_reference' => false 
     )) 

ClientTarifaType.php

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('nombre', EntityType::class, array(
       'class' => 'AppBundle:Tarifa', 
       'label' => 'Tarifa asociada a este cliente', 
       'placeholder' => 'Elige tarifa...', 
      )); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Tarifa', 
     )); 
    } 

送られたフォームデータは、タリファのエンティティのフィールドの内タリファのエンティティを表示されますので、内部(あまりにも一方のエンティティを提出する際に問題が来ます同じタイプの別のものです!)、このように:

Tarifa {#1050 ▼ 
    -id: null 
    -clientes: null 
    -plaza: null 
    -mercancia: null 
    -envios: ArrayCollection {#1054 ▶} 
    -pesos: array:27 [▶] 
    -codigo: null 
    -nombre: Tarifa {#1070 ▼ 
    -id: 1 
    -clientes: PersistentCollection {#1076 ▶} 
    -plaza: Plaza {#1129 ▶} 
    -mercancia: null 
    -envios: PersistentCollection {#1183 ▶} 
    -pesos: PersistentCollection {#1201 ▶} 
    -codigo: "00001" 
    -nombre: "Canarias" 
    } 
} 

私は思っています私の問題はタリファ型のフィールドがあり、data_classもタリファ型です。選択フィールドにnombre属性とid属性のみを入れるにはどうすればよいですか?事前に感謝、どんな助けも歓迎です!

答えて

0

既に作成されたタリファを1つ以上選択したい場合は、ClientTarifaType.phpという形式は必要ありません。 http://symfony.com/doc/current/reference/forms/types/entity.html

->add('tarifas', EntityType::class, array(
    'class' => 'AppBundle:Tarifa', 
    'multiple' => true, 
    //'expanded' => true, 
)) 

あなたが同時にクライアントを作成しているときtarifasを作成する場合は、フォームのコレクションが必要になります。https://symfony.com/doc/current/form/form_collections.htmlが、私は、これはあなたのケースではないと思います。 SELECT2

<html> 
<form> 
    {{ form_row(form.tarifas) }} 
</form> 
<script type="text/javascript" src="{{ asset('bundles/app/js/jquery.js') }}"></script> 
<script type="text/javascript" src="{{ asset('bundles/app/js/select2.js') }}"></script> 
<script type="text/javascript"> 
    $('#{{ form.tarifas.vars.id }}').select2(); 
</scrip> 
</html> 
+0

ビューには、私は、ユーザーが望む限り多く、複数のタリファを選択する必要があり、それはjQueryので追加する必要があります。しかし、この単純なフィールドをjQueryでどのように使うことができますか? – jmunozco

+0

Jqueryは必要ありません。multiple = trueは複数の場合、チェックボックスを使用する場合は展開を使用できます。 Jqueryを使用すると、それを美しくすることができます。私は通常select select2を使用しますが、必要に応じてoptionalyを使用することができます。私は私の答えを編集しました – h3llr4iser

+0

select2ライブラリhttps://select2.github.io/ – h3llr4iser

関連する問題