Я настроил Symfony 2 Data Transformer , который позволит пользователю вводить список строк через запятую и преобразовывать их в ArrayCollection, которую ожидает Doctrine. Теперь проблема в transform()
, где он преобразует ArrayCollection
в строку через запятую.
/**
* Transform ArrayCollection of Tag's into Comma Separated string
*
* @param ArrayCollection $tags
* @return string
*/
public function transform($tags) {
if ($tags == null)
return '';
$tagNames = array();
var_dump($tags);
$tags->map(function($tag) use(&$tagNames) {
$tagNames[] = $tag->getName();
});
return implode(', ', $tagNames);
}
$tags
выглядит так:
object(Doctrine\Common\Collections\ArrayCollection)#222 (1) {
["_elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
array(1) {
[0]=>
array(1) {
[0]=>
object(JM\BlogBundle\Entity\Tag)#53 (3) {
["id":"JM\BlogBundle\Entity\Tag":private]=>
int(1)
["name":"JM\BlogBundle\Entity\Tag":private]=>
string(4) "blog"
["description":"JM\BlogBundle\Entity\Tag":private]=>
string(0) ""
}
}
}
}
Обратите внимание на массив в массиве. Почему это?
ОБНОВЛЕНИЕ: код преобразователя данных -> http://pastie.org/3004780