Form.factory hizmetinden 'createNamedBuilder' veya 'createNamed' işlevlerinin kullanılması durumunda, verileri kullanarak verileri nasıl ayarlayıp kaydedeceğinize dair ön bilgi burada. 'Veri' alanını kullanamazsınız (boş bırakın) ve aktarılan verileri / varlıkları $options
değer olarak ayarlamanız gerekir .
Ayrıca setAllowedTypes () ve setRequired () seçeneklerini kullanma hakkında @sarahg talimatlarını da ekledim ve iyi çalışıyor gibi görünüyor, ancak önce setDefined () ile alanı tanımlamanız gerekiyor
Ayrıca, verilerin ayarlanmasına ihtiyacınız varsa, formun içinde 'veri' alanına eklemeyi unutmayın.
Denetleyicide getBlockPrefix kullanıyorum çünkü getName 2.8 / 3.0'da kullanımdan kaldırıldı
Denetleyici:
$formTicket = $this->get('form.factory')->createNamed($tasksPerformedForm->getBlockPrefix(), TaskAddToTicket::class, null, array('ticket'=>$ticket) );
Form:
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefined('ticket');
$resolver->setRequired('ticket');
$resolver->addAllowedTypes('ticket', Ticket::class);
$resolver->setDefaults(array(
'translation_domain'=>'AcmeForm',
'validation_groups'=>array('validation_group_001'),
'tasks' => null,
'ticket' => null,
));
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$this->setTicket($options['ticket']);
$options['data']['ticket']=$options['ticket'];
$builder
->add('ticket', HiddenType::class, array(
'data_class'=>'acme\TicketBundle\Entity\Ticket',
)
)
...
}