2

Make、Model、Autoの3つのエンティティがあります。Make-> ModelはoneToManyリレーションであり、Auto->ModelはmanyToOneリレーションです。

私が達成したいのは、メーカーのリスト(Ford、Opelなど)で構成されるフォームを生成し、最初にモデルの空のリストをロードできるようにすることです。モデルリストは、リストでMakeが選択されている場合にのみ入力する必要があります。これは、ajax呼び出しによって実現されます。

私の質問は、フォームビルダーが任意のMakeで割り当てられたすべてのモデルを入力しているため、モデルリストが最初は空であるために何をする必要があるかです。

query_builderを使用して同様のことを実現し、存在しないモデルを検索するとしますが、それは正しい方法ではありません。

class AutoType extends AbstractType {
   public function buildForm(FormBuilder $builder, array $options) { 
       $builder->add('make','choice', array(
                   'choices'=>Array('1'=>'Opel', '2'=>'Ford'),
                   'property_path'=>false,
                   'label'=>'Make'))
                ->add('model', 'entity', array(  // this fetches all models.  Also don't want a subset of models, just empty list with 'Select Model' 
                 'class' => 'Auto\SalonBundle\Entity\Model',
                 'empty_value' => 'Select Model'
                  ))
                ->add('km')
                ->add('cc')
                ->add('hp')
                ->add('kw')
          );
    }
}
4

1 に答える 1

0

これを実現するには、独自のフォーム タイプと対応する _widget ブロックを作成する必要があります。または、バンドルhttps://github.com/shtumi/ShtumiUsefulBundleの Dependent Filtered Form Type を使用して、より速くそこに到達できます。

于 2012-07-12T17:44:51.163 に答える