我有的:
具有多个不同输入字段等的表单。有趣的部分是集合字段:
$builder->add( 'publicationAuthors', 'collection', array (
'type' => new AuthorPublicationType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'label' => 'Autoren'
));
此集合引用另一个FormType,仅包括一个实体字段和一个订单ID:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add( 'author', 'entity', array (
'class' => 'indPubBundle:Author',
'multiple' => false,
'label' => 'Autor',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder( 'a' )
->orderBy( 'a.author_surname', 'ASC' );
}
$builder->add( 'order_id', 'hidden');
));
}
通过JS,我可以向表单中添加新的收藏表单字段,以便用户随后可以选择其中的几个作者并对其进行排序。
我需要的:
到目前为止,由于实体字段,用户只能选择现有作者。我要增强表单,以便用户还可以创建新作者并在表单中使用这些作者。我想添加一个按钮,该按钮会将用户重定向到新表单,在该表单中,他可以创建新作者。然后,在提交该表单后,应将用户重定向回原始表单并继续填写。
这里的主要问题是,我想记住用户以前对原始表单的输入,因此他不需要从头开始。用户使用作者创建表单时,是否可以记住这些输入?
我想记住会话中的数据,但是有一个问题:如果用户打开一个新选项卡,则他可能会覆盖旧的表单输入,因为两个选项卡的会话ID都相同。
好吧,我找到了一个令我满意的解决方案。基本上,我会处理整个表单数据,将其序列化,并在一个隐藏的表单字段中记住这一点。因为serialize函数返回了一些在html中不可用的符号,所以我也使用base64对该字符串进行编码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句