我有什么:
具有多个不同输入字段等的表单。有趣的部分是集合字段:
$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都相同。 / p>
答案 0 :(得分:0)
好的,我找到了一个令我满意的解决方案。 基本上,我采用整个表单数据,序列化并记住隐藏的表单字段。 因为serialize函数返回了几个在html中无法使用的符号,所以我也用base64对字符串进行编码。