我有modules/dashboard/index.js
。在此Formtype
中,我在Formtype
函数中了解了options
- 数组中的一个键buildForm
。我想将此值添加到additionalName
名称(在Symfony3 BlockPrefix中)。但我该如何设置呢?
FormType
我已经尝试在类的顶部设置变量private class AdultType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$additionalName = $options['additionalName'];
$builder
->add('account', TextType::class,array(
'label' => 'account',
'required' => false,
))
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\WebsiteBundle\Model\Adult',
'csrf_protection' => true,
'cascade_validation' => true,
'name' => ""
));
}
/**
* @return string
*/
public function getBlockPrefix()
{
//Here I need the $options['additionalName']
return 'my_bundle_websitebundle_adult_'.$options['additionalName'];
}
,在$additionalName;
函数中进行设置并使用buildForm
$this->additionalName
访问它功能。但getBlockPrefix
中的值为空。所以我认为在getBlockPrefix
之前调用了getBlockPrefix
。
从另一种形式调用类型:
buildForm
感谢您的帮助!
答案 0 :(得分:0)
我建议你在FormType中添加一个属性:
class AdultType extends AbstractType
{
protected $_additionalName;
public function __construct($additionalName= ''){
$this->_additionalName = $additionalName;
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$additionalName = $options['additionalName'];
$builder
->add('account', TextType::class,array(
'label' => 'account',
'required' => false,
))
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\WebsiteBundle\Model\Adult',
'csrf_protection' => true,
'cascade_validation' => true,
'name' => ""
));
}
/*
* @return string
*/
public function getBlockPrefix()
{
//Here I need the $options['additionalName']
return 'my_bundle_websitebundle_adult_'.$this->_additionalName;
}
编辑:
Arf ..我认为它只适用于Symfony 2之前(2.8)..
答案 1 :(得分:-1)
试试这个:
class AdultType extends AbstractType
{
protected $_additionalName;
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->_additionalName = $options['additionalName'];
$builder
->add('account', TextType::class,array(
'label' => 'account',
'required' => false,
))
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\WebsiteBundle\Model\Adult',
'csrf_protection' => true,
'cascade_validation' => true,
'name' => ""
));
}
/**
* @return string
*/
public function getBlockPrefix()
{
//Here I need the $options['additionalName']
return 'my_bundle_websitebundle_adult_'.$this->_additionalName;
}
public function getName(){
return $this->getBlockPrefix();
}
}
getBlockPrefix无法识别$ options [' additionalName'],因此您需要一个类属性。另外你可以试试getName()