7

私は次の実体関連を持っています:

  • 顧客は1対多の住所を持っています
  • アドレスには、多対1の郡と多対1の市があります
  • 郡には1対多の市があります。

だから、私のCustomerTypeには、

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ...
        ->add('addresss', 'collection', array(
            'label' => 'customer.address',
            'type' => new AddressType(),
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
        ))
    ;
}

そして私のAddressTypeには、

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ...
        ->add('city', 'entity', array(
            'class' => 'MyCustomerBundle:City',
            'query_builder' => function(CityRepository $cr) use ($options) {
                return $cr->getCityQB($options['county']);
            },
            'property' => 'city',
            'empty_value' => '',
        ))
    ;
}

私の目標は、対応する郡の一連の都市のみを表示することです。$ optionsからCustomerTypeに値を取得できますが、AddressTypeに値を渡すにはどうすればよいですか?各住所が対応する郡に都市を検索するようにするには?

どんな助けでもいただければ幸いです。ありがとう!

4

3 に答える 3

8

symfony3 で:

$builder->add('example', CollectionType::class, array(
    'entry_type'   => ExampleType::class,
    'entry_options'  => array(
        'my_custom_option'  => true),
));
于 2017-02-24T17:29:07.330 に答える
3

コレクションタイプの「オプション」オプションを使用できると思います。フォームを別の場所で再利用する場合は、コンストラクターを使用するよりも優れています。

symfony フォーム リファレンス:コレクション型

ただし、メソッドで変数を定義することを忘れないでくださいsetDefaultOptions。(両方のフォームにそれが必要です)

于 2013-11-26T23:13:22.063 に答える