'EntityType'から拡張するカスタムフォームフィールドタイプを構築しています。渡されたオプションに基づいて要素のサブセットを常に返したいです。
私のタイプでは:
$builder->add('Categories','choice_category', array('code'=> 'CAT1', 'multiple'=> true)) ;
私はchoice_categoryをサービスとして宣言しました。うまくいきました!
bt.form.type.category:
class: My\MBundle\Form\Type\CategoryType
tags:
- { name: form.type, alias: choice_category }
CategoryChoiceType.phpで
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'class'=> 'CmComunBundle:Comun\Nomenclador',
'code' => null,
)
);
}
public function getParent()
{
return 'entity';
}
query_builderオプションを使用することを考えていますが、コードオプションをsetDefaultOptionsメソッドに渡す方法がわかりません。ここでは、$options配列にアクセスしていません。
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'class'=> 'CmComunBundle:Comun\Nomenclador',
'code' => null,
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($options['code']) {
return $er->createQueryBuilder('c')
->where('c.parent_code = :code')
->orderBy('c.name', 'ASC')
->setParameter('code', $options['code']);;
}
)
);
);