누군가 form.factory 서비스에서 'createNamedBuilder'또는 'createNamed'함수를 사용하는 경우이를 사용하여 데이터를 설정하고 저장하는 방법에 대한 스 니펫이 있습니다. 'data'필드를 사용할 수 없으며 (null 그대로 두십시오) 전달 된 데이터 / 항목을 $options
값 으로 설정해야 합니다.
또한 setAllowedTypes () 및 setRequired () 옵션 사용에 대한 @sarahg 지침을 통합했으며 제대로 작동하는 것 같지만 먼저 setDefined ()로 필드를 정의해야합니다.
또한 양식 내에서 데이터를 설정해야하는 경우 '데이터'필드에 추가해야합니다.
컨트롤러에서는 2.8 / 3.0에서 getName이 더 이상 사용되지 않으므로 getBlockPrefix를 사용하고 있습니다.
제어 장치:
$formTicket = $this->get('form.factory')->createNamed($tasksPerformedForm->getBlockPrefix(), TaskAddToTicket::class, null, array('ticket'=>$ticket) );
형태:
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',
)
)
...
}