entitytype multiple default value - symfony

i have a entitytype and i want give default value (i have the id of entity type)
->add('esame_' . $i, EntityType::class, array(
'label' => false,
'mapped' => false,
'class' => 'AppBundle:Nome_esame',
'required' => true,
'multiple' => true,
'data'=>array($id_Nome_esame1,$id_Nome_esame2) ,
'choice_label' => 'nome',
// 'disabled' => 'disabled',
'attr' => array(
'placeholder' => 'Esami',
'class' => 'max_width esame_row select_esame',
// 'class'=>'col-md-12 col-md-offset-0 col-xs-9 col-xs-offset-3 ',
)
))
My goal is give 2 or more default value to that entity
i try
'data'=>array($id_Nome_esame1,$id_Nome_esame2)
where $id_Nome_esame1, and $id_Nome_esame2 are the id value of entity type by it don't work

I think your data has to be the same type as the class (AppBundle:Nome_esame)
Try something like this (you will need to bring doctrine or the entity manager into your FormType if you didn't do that yet)
->add('esame_' . $i, EntityType::class, array(
'label' => false,
'mapped' => false,
'class' => 'AppBundle:Nome_esame',
'required' => true,
'multiple' => true,
'data' => array($this->em->getReference("AppBundle:Nome_esame", $id_Nome_esame1), $this->em->getReference("AppBundle:Nome_esame", $id_Nome_esame2)),
'choice_label' => 'nome',
// 'disabled' => 'disabled',
'attr' => array(
'placeholder' => 'Esami',
'class' => 'max_width esame_row select_esame',
// 'class'=>'col-md-12 col-md-offset-0 col-xs-9 col-xs-offset-3 ',
)
))
To get the entity manager, if you use the formType as a service, inject doctrine into it, if not, just past it via __construct.
Hope this helps,
Alexandru Cosoi

Related

Disable empty_value FormType Symfony2

I want to disable the empty_value by default in my form type.
how to do this ?
->add('subject', 'choice', array(
'label' => 'Subject',
'choices' => array(
'1' => 'contact.Appreciation',
'2' => 'contact.Feedback',
'3' => 'contact.Dissatisfactions',
'4' => 'contact.My account',
'5' => 'contact.Recruitment',
'6' => 'contact.Other',
),
'attr' => array(
'class' => 'form-control'
),
'required' => false,
'empty_value' => 'contact.Subject',
))
Change required to true.
'required' => true
See documentation
There is no easy solution for this, but you can use an event listener on the PRE_BIND event.
See this for example: https://stackoverflow.com/a/14346520/606104

Access translated property of collection in form

I have a form with a collection. My form "PageType" with a collection look like this.
$builder->add('sections', 'collection', array(
'type' => new SectionType($this->securityContext, $this->entityManager) ,
'allow_add' => true,
'allow_delete' => true,
'label' => false,
'prototype' => true,
'prototype_name' => '__sectionPrototype__',
'options' => array(
'label' => false,
)
And my second form which represents the collection "SectionType" look like this.
->add('translations', 'a2lix_translations', array(
'fields' => array(
'title' => array(
'field_type' => 'text',
'label' => 'title',
'attr' => array('class' => 'rte sectionTitle')
),
'text' => array(
'field_type' => 'textarea',
'label' => 'hintText',
'attr' => array('class' => 'rte sectionDescription')
)
)
))
How can i access from twig the translations fields?
I think that is not possible. Maybe somebody could correct me if I'm wrong.
fields is an option item for a2lix_translations. If you would have Form object you might be able to do that, but in fact, you have FormView which represents built form.
Alternatively, you could pass that array via standard return from controller and into your twig. Does that sound good?

Symfony2 collection and related choice field not (yet) managed

I've got a form with a collection field "options" and a choice field "defaultOption". My goal is to enable the user to create a new entity, add some options and select a default option from the list of option he/she just added before saving the entire thing.
Here's part of the form that shows both fields:
$form->add('options', 'collection', array(
'type' => new CustomFieldOptionType(),
'label' => 'custom.field.options',
'allow_add' => true,
'allow_delete' => true,
'options' => array(
'label_render' => false,
'widget_control_group' => false,
),
'by_reference' => false,
'attr' => array('class' => 'options')
));
$form->add('defaultOption', 'entity', array(
'label' => 'custom.field.default',
'class' => 'XFDOBundle:CustomFieldOption',
'choices' => $field->getOptions(),
'property' => 'name',
'required' => false,
'empty_value' => 'custom.field.default.empty',
'attr' => array('class' => 'default-option')
));
I've tried several things with jquery and form event listeners to (re)populate the "defaultOption" field with the new (not-yet-persisted) options, but that resulted in to nothing or "Entities passed to the choice field must be managed" exceptions.
Any idea how I can get this working?

How to make checkbox checked?

I have this field in form builder
->add('pay_method', 'choice', array(
'choices' => array(
'telnet' => 'Image',
),
'expanded' => true,
'label' => 'Способ оплаты',
))
with ony one option yet, but how can i make this checked?
Add attr index with 'checked' => 'checked':
->add('pay_method', 'choice', array(
'choices' => array(
'telnet' => 'Image',
),
'expanded' => true,
'label' => 'Способ оплаты',
'attr' => array('checked' => 'checked')
))
Set it on the object or array the form is used for.
You can set the default value by either setting it in your domain model:
private $pay_method = 'telnet';
or
$object->pay_method = 'telnet'
or by specifying the "data" option of the field:
$builder->add('pay_method', 'choice', array(
'choices' => array(
'telnet' => 'Image',
...
),
'data' => 'telnet',
'expanded' => true,
'label' => ...,
));
Ok, i did it through JavaScript

using sonata_type_collection against a custom form type instead of a property/relationship with another entity

is it possible to use sonata_type_collection against a custom form type instead of a property/relationship with another entity?
Something like this:
$formMapper->add('foo', 'sonata_type_collection',
array('type' => new \myVendor\myBundleBundle\Form\Type\BlockType()
));
Which throws me the following error
The current field `contingut` is not linked to an admin. Please create one for the target entity : ``
EDIT:
Something like this did the trick:
$formMapper->add('contingut', 'collection', array(
'type' => new \myVendor\myBundleBundle\Form\Type\Block1Type(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
));
Instead of a custom type in your example, you can also use a native entity type.
$formMapper->add('cars',
'collection',
array(
'type' => 'entity',
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'label' => false,
'options' => array(
'class' => 'YourBundle:Car',
'property' => 'name',
'label' => false
)
)
)

Resources