Виртуальные поля в Symfony2 - PullRequest
0 голосов
/ 15 ноября 2011

Я все еще думаю о лучшем способе работы с тегами в 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);
}

Я мог бы просто использовать элемент формы в этом поле.К сожалению, я не вижу способа перевести строки в объекты-теги внутри объекта, поскольку у меня нет доступа к менеджеру объектов.

Так что же такое чистый способ?

1 Ответ

1 голос
/ 15 ноября 2011

Чистым способом является использование преобразователя данных .Он преобразует строки в ваши сущности тегов на стороне «формы», а не в сущности, поэтому вы можете сохранить свою сущность в чистоте.

...