问题
I've created a tag system in a bundle using a formType (TagsType) which I include in my main formType (See below). I'd like to know how I can send the $options argument values from MyFormType to TagsType.
//...
use EC\TagBundle\Form\Type\TagsType;
class MyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//...
->add('tags', TagsType::class)
//...
;
}
}
My TagsType
//...
use Symfony\Component\Form\Extension\Core\Type\TextType;
class TagsType extends AbstractType
{
/**
* @var ObjectManager
*/
private $manager;
public function __construct(ObjectManager $manager)
{
$this->manager = $manager;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->addModelTransformer( new CollectionToArrayTransformer(), true )
->addModelTransformer( new TagsTransformer($this->manager), true )
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('attr', [
'class' => 'tag-input',
]);
$resolver->setDefault('required', false);
}
public function getParent()
{
// Il retourne un TextType par défaut.
return TextType::class;
}
}
回答1:
I found. Just do this :
->add('tags', TagsType::class, ['empty_data' => $options])
TagsType.php
$options = $options['empty_data'];
来源:https://stackoverflow.com/questions/44390433/symfony-3-sending-the-options-argument-values-from-formtype-to-underformtype