У меня есть объект типа поля, который отображается как флажки. Я хочу добавить для каждого флажка поле типа textarea, как я могу это сделать?Symfony: Как добавить форму поля к ребенку?
Код:
// OfferType.php
$builder
->add('payment_method', new OfferPaymentType(), [
'required' => false,
'mapped' => false,
'expanded' => true,
'multiple' => true,
])
;
// OfferPaymentType.php
class OfferPaymentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('payment', null, [
'multiple' => true,
'expanded' => true,
'compound' => true,
])
;
$factory = $builder->getFormFactory();
$formModifier = function (FormInterface $form, $payments = null) use ($factory) {
foreach ($form as $child) {
//dump($child);die;
$child->add(
$factory->createNamed('metadata', 'textarea', null, [
'auto_initialize' => false,
'compound' => true,
]),
null,
['compound' => true]
);
}
};
$builder->get('payment')->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'multiple' => true,
'expanded' => true,
'class' => 'AppBundle:OfferPayment',
'data_class' => 'AppBundle\Entity\OfferPayment',
'translation_domain' => 'app',
'compound' => true,
));
}
public function getName()
{
return 'offer_payment';
}
}
Я думаю, что вы можете решить следующие шаги: 1- Создать форму нового типа с двумя полями s - checkbox и textarea 2- Создайте новую форму с созданной коллекцией нового типа. Но это зависит от того, что вам нужно делать. В любом случае, вы можете посмотреть в документе: [Как встроить коллекцию форм] (http://symfony.com/doc/current/cookbook/form/form_collections.html) – rck6982
с помощью этого метода поле типа объекта будет флажок select box не установлен –