<?php
namespace JF\JuridicusBundle\Form\Type;
use JMS\DiExtraBundle\Annotation\FormType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\Event\DataEvent;
use Symfony\Component\Form\FormEvents;
use JF\JuridicusBundle\Form\DataTransformer\KundeKenntnisseToArrayTransformer;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
/**
* @FormType
*/
class KundeKenntnisseType extends AbstractType
{
/**
*
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('kenntnisse', EntityType::class, array(
'label' => false,
'required' => false,
'class' => 'JF\JuridicusBundle\Entity\Kenntnis',
'multiple' => true,
'expanded' => true,
'choice_label' => 'name', // welches Feld angezeigt wird
'row_attr' => ['class' => 'form-check-inline'], // Bootstrap inline
'choice_attr' => function($choice, $key, $value) {
return ['class' => 'form-check-input']; // optional CSS für jedes Input
},
))
->add('sonstiges', TextType::class, array(
'required' => false,
))
->addModelTransformer(new KundeKenntnisseToArrayTransformer())
->addEventListener(FormEvents::POST_SUBMIT, function ($event) { //DataEvent $event
$form = $event->getForm();
//$keine_kenntnisse = $form['keine_kenntnisse']->getData();
$kenntnisse = $form['kenntnisse']->getData();
$sonstiges = $form['sonstiges']->getData();
$kenntnis_last = $kenntnisse->last();
//$keine_kenntnisse == false and
if ($kenntnisse->count() == 0) {
$form['kenntnisse']->addError(new FormError('Keine Interessengebiete ausgewählt.'));
}
if (empty($sonstiges) and $kenntnis_last and $kenntnis_last->getName() === 'Sonstiges') {
$form['sonstiges']->addError(new FormError('Die Angabe "Sonstiges" ist leer.'));
}
})
;
}
/**
* @return string
*/
public function getKundeKenntnisseType()
{
return 'kunde_kenntnisse';
}
public function getName()
{
return 'kunde_kenntnisse';
}
}