我不能在 createFormBuilder 中使用变量
I can't use a variable in createFormBuilder
为什么我不能在我的函数 createFormBuilder 中使用我的变量 $idType ?
public function buildForm(FormBuilderInterface $builder, array $options)
{
$idType = $options['data']->getEvenement()->getType()->getId();
$builder
->add('depart', DateTimeType::class, array(
'widget' => 'single_text'
))
->add('inscription', TextType::class)
->add('prixNl', IntegerType::class)
->add('prixL', IntegerType::class)
->add('resultat', TextType::class)
->add('sousType', EntityType::class, array(
'class' => 'CalendrierBundle:SousType',
'choice_label' => 'nom',
'multiple' => false,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.typeId = :type')
->setParameter('type', $idType);
}
))
->add('save', SubmitType::class)
;
}
她不认识
感谢您的帮助
您应该使用 use ($idType)
关键字将 $idType 变量从父作用域继承到 closure。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$idType = $options['data']->getEvenement()->getType()->getId();
$builder
->add('depart', DateTimeType::class, array(
'widget' => 'single_text'
))
->add('inscription', TextType::class)
->add('prixNl', IntegerType::class)
->add('prixL', IntegerType::class)
->add('resultat', TextType::class)
->add('sousType', EntityType::class, array(
'class' => 'CalendrierBundle:SousType',
'choice_label' => 'nom',
'multiple' => false,
'query_builder' => function (EntityRepository $er) use ($idType) {
return $er->createQueryBuilder('u')
->where('u.typeId = :type')
->setParameter('type', $idType);
}
))
->add('save', SubmitType::class)
;
}
为什么我不能在我的函数 createFormBuilder 中使用我的变量 $idType ?
public function buildForm(FormBuilderInterface $builder, array $options)
{
$idType = $options['data']->getEvenement()->getType()->getId();
$builder
->add('depart', DateTimeType::class, array(
'widget' => 'single_text'
))
->add('inscription', TextType::class)
->add('prixNl', IntegerType::class)
->add('prixL', IntegerType::class)
->add('resultat', TextType::class)
->add('sousType', EntityType::class, array(
'class' => 'CalendrierBundle:SousType',
'choice_label' => 'nom',
'multiple' => false,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.typeId = :type')
->setParameter('type', $idType);
}
))
->add('save', SubmitType::class)
;
}
她不认识
感谢您的帮助
您应该使用 use ($idType)
关键字将 $idType 变量从父作用域继承到 closure。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$idType = $options['data']->getEvenement()->getType()->getId();
$builder
->add('depart', DateTimeType::class, array(
'widget' => 'single_text'
))
->add('inscription', TextType::class)
->add('prixNl', IntegerType::class)
->add('prixL', IntegerType::class)
->add('resultat', TextType::class)
->add('sousType', EntityType::class, array(
'class' => 'CalendrierBundle:SousType',
'choice_label' => 'nom',
'multiple' => false,
'query_builder' => function (EntityRepository $er) use ($idType) {
return $er->createQueryBuilder('u')
->where('u.typeId = :type')
->setParameter('type', $idType);
}
))
->add('save', SubmitType::class)
;
}