我正在开发基于 Symfony 4 和 Select2 库的应用程序。
在我的
src/Form/PostType.php
文件中,我声明了字段标记,用户应该能够在其中设置预先声明的 Tag
之一或添加新的(通过输入标记名称并按 Enter 键)。
$builder->add('tags', EntityType::class, [
'class' => Tag::class,
'choice_label' => 'name',
'mapped' => false,
'expanded' => false,
'multiple' => true,
'required' => false,
]);
在前端,我使用 select2 库来处理显示标签字段。
在下面的示例中,第一个标签是从数据库中现有的实体中选择的,第二个标签应保存在这一秒中。
知道我应该将什么更改为提交的声明才能使该字段对新标签也有效吗? 控制器已准备就绪,唯一的问题是通过表单验证:)
ORM 中的关系如下所示:
class Company {
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Tag", mappedBy="companies")
*/
private $tags;
}
class Tag
{
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Company", inversedBy="tags")
*/
private $companies;
}
除了上面的代码之外没有其他验证
您已将要映射的字段设置为 false。如果字段未映射,您必须手动处理表单验证。您可以分享您的实体代码,任何验证代码(如果已编写)吗?