所以我开始学习Symfony。它看起来像一个非常棒的框架,但有些概念对我来说仍然模糊,所以请原谅我的问题,这对你们中的一些人来说可能是愚蠢的。
所以我想做的是创建一个页面,我的用户可以在同一页面中添加同一个实体的多个实例(假设为5),所以它有点像“在bash中添加项目”页面(有点像phpMyAdmin插入数据页面,你可以在一个页面中添加多行。
我已经从我的实体制作了FormType,当我想添加1个实体时,一切正常,但我不知道如何处理多个实体插入。
我尝试过使用FormCollection,没有任何成功(抱歉,我删除了我的代码,所以我无法显示我尝试过的内容......)。我也尝试用循环生成5种不同的形式,只改变它们的名字,但我不知道如何处理它们。
如果有人能指引我,那对你来说真的很棒!提前谢谢!
P.S我正在使用Symfony 3.1.4
答案 0 :(得分:0)
根据您的要求,您的表格似乎并不大。所以,你应该使用AJAX。
加载单个表单但通过ajax处理提交,成功时,您的控制器应通过Warning:jcifs.http.NetworkExplorer: can't find referenced method 'java.util.Enumeration getInitParameterNames()' in program class jcifs.http.NetworkExplorer.
以另一个新表单回复。这样,用户不必填写所有表格,但可以获得更好的可用性。
希望它有所帮助!
答案 1 :(得分:0)
如果您将一个表单嵌套在另一个表单中,则可以根据需要添加任意数量的表单。因此,如果第一个表单创建一个实体...例如:
实体表格:
// src/AppBundle/Form/TaskType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name')
->add('task');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Task',
));
}
}
允许添加多种表单的容器表单:
// src/AppBundle/Form/ProjectType.php
namespace AppBundle\Form;
use src/AppBundle/Form/TaskType.php
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
class ProjectType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('tasks', CollectionType::class, array(
'entry_type' => TaskType::class,
'allow_add' => true // <- don't forgot this part :)
))
->add('save', SubmitType::class);
}
}
您需要将容器表单连接到某些JavaScript,以便您可以动态添加更多实体表单。那是described in detail in this cookbook article。此外,公平警告:这是由一个沉睡,懒惰的大脑打字,未经测试,可能没有功能。但它应该让你走上正确的道路:D祝你好运!