Autor Zpráva
breeta
Profil
Zdravím, neřešil někdo předání z rodičovského form id pro filtraci výběru potomka formuláře (CollectionType)?

Mám rodiče:
class VideoType extends AbstractType
{

    public $IdSubject;
 
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $this->IdSubject = $builder->getData()->getTheme()->getSubject()->getId();

        $builder
             ...... 
            ->add('videoDependences', CollectionType::class, [
                'entry_type' => VideoDependenceType::class,
                'entry_options' => array(
                    'label' => false
                ),
                'label' => false,
                'allow_add' => true,
                'allow_delete' => true,
                'delete_empty' => true,
                'by_reference' => false,
            ])
        ;




    }


    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Video::class,
        ]);
    }
}

IdSubject potřebuji dostat do potomka formuláře v CollectionType

class VideoDependenceType extends AbstractType
{


    public function buildForm(FormBuilderInterface $builder, array $options)
    {


        $builder
            ->add('videoDependence', EntityType::class, [
                'class' => Video::class,
                'mapped' => false,
                'query_builder' => function (VideoRepository $er)   {
                    return $er->createQueryBuilder('v')
                        ->leftJoin('v.theme', 't')
                        ->andWhere('t.subject = :subject')
                        ->setParameter('subject', 1)
                        ->orderBy('v.name', 'ASC');
                },
                'choice_label' => 'name',
                'label' => 'Video'
            ])
        ;


    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => VideoDependence::class,
        ]);
    }
}

Nevíte jak to udělat nejlíp?
Amunak
Profil
A co je to IdSubject, kde se tam bere? Proč je public, resp. proč ho získáváš takhle nešikovně uvnitř toho formu v buildForm fázi?

Buď jde skutečně o součást modelu (dat), a pak by to mělo být nalezitelné i v tom potomkovi, nebo jde o nějakou servisu nebo tak něco, a pak by se to tam mělo cpát přes DI. Nebo jde o "vlastnost" toho formuláře, a pak bys to tam měl cpát přes options (configureOptions).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0