これが私のフォームのコードです:
class CentrexEdit1Type extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('bases', 'entity', array(
'class' => 'TelnOperatorBundle:Base',
'property' => 'name',
'multiple' => true,
));
$ids= $builder->getData()->getBases();
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Teln\OperatorBundle\Entity\Centrex'
));
}
public function getName()
{
return 'teln_operatorbundle_centrextype';
}
}
$ids= $builder->getData()->getBases();
「CentrexType」からコントローラーに変数を渡す必要があります。サービスを利用する必要がありますか? getSession を試しましたが、失敗しました。どうやってするか?
例: query_builder を追加する必要がある場所
class CentrexEdit2Type extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('softswitchs', 'entity', array(
'class' => 'TelnOperatorBundle:Softswitch',
'property' => 'name',
'multiple' => true,
'query_builder' => function(\Teln\OperatorBundle\Entity\SoftswitchRepository $er) use ($ids)
{
$identities=array();
foreach($ids as $id){
$identities[]=$id->getId();
}
$qb = $er->createQueryBuilder('t')
->where('t.base IN(:ids)')
->setParameter('ids', $identities);
return $qb;
},
));
}