我有这两个实体:
class Article
{
/** @var ArrayCollection
protected $tags;
}
class Tag
{
protected $id;
protected $name;
}
基本上我读过http://symfony.com/doc/master/cookbook/form/form_collections.html但这并不能解释我的情况。
让我解释一下。
我在数据库中已有标签,因此我希望能够将多个标签关联到我的文章,我不想允许创建不存在的标签。
由于我的目标是在 REST api 和 Web 表单中使用我的表单,因此我希望我的客户端能够仅使用 id
来引用标签(这将之前已经获取过)。
有什么想法吗?
最佳答案
您可以使用entity field typ e.实际上,它是一种选择字段类型,您可以将其呈现为具有多项选择的选择或复选框列表。然而,如果你有很多标签,就会有太多的选择,用户会不高兴。
因此,我建议实现一个类似 Stackoverflow 的标记系统。
我在一个项目中使用 Javascript tokeninput 库做到了这一点,就像 loopj 那样。 。 在实践中:
您应该首先呈现一个名为
tags
的文本字段。然后您应该使用用于标记处理的 Javascript 库来处理该输入字段的标记插入。
Controller 将收到一个标记化字符串,您必须处理该字符串才能从 Doctrine 检索
Tag
实体。最后,检索
Tag
实体列表,将它们分配给您的Article
实体并刷新所有内容。
关于forms - 如何在 Symfony2 表单中使用现有实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528606/