我仍在考虑在Symfony中使用标记的最佳方法。我确实看过FPNTagBundle,但我没有找到一种简单的方法将其用于CRUD表单。
我还发现http://xoxco.com/clickable/jquery-tags-input可以提供完美的小部件。因为它输入和输出逗号分隔的字符串,我想我可以在我的模型中定义一个虚拟字段,它将标记对象数组显示为这样一个列表。
public function addTag(\Wein\StoreBundle\Entity\Tag $tag)
{
$this->tag[] = $tag;
$this->makeTagFieldFromTags();
}
public function setTagField($tagField)
{
$this->tagField = $tagField;
$this->makeTagsFromTagField();
}
public function makeTagsFromTagField()
{
$tags=explode(',', $this->tagField);
$tagObjects=array();
$em = $this->getDoctrine()->getEntityManager();
foreach($tags as $tag) {
$tag=trim($tag);
$tagObject = **???**;
$tagObjects[]=$tagObject;
}
$this->tag=$tagObjects;
}
public function makeTagFieldFromTags()
{
$tags=array();
foreach($this->tag as $tag) {
$tags[]=$tag->__toString();
}
$this->tagField = implode(',', $tags);
}
我可以在这个字段上使用表单元素。不幸的是,我没有看到将字符串转换为标签对象的方法,因为我无法访问实体管理器。
那么干净的方式是什么?