FOSRestBundle & Propel & JMSserializerBundle Symfony2

Я пытаюсь следовать руководству Уильяма Дюрана здесь для создания API для отдыха с помощью fosrest bundle и propel. Я уже 2 дня бьюсь головой о сериализацию. Я нашел некоторых пользователей, которые столкнулись с подобной проблемой, но не нашли решения.

Вот мой контроллер:

/**
 * @Rest\View
 */
public function allAction(){
    $messages = MessageQuery::create()->find();
    return array('messages' => $messages);
}

Я ожидаю вывод сообщений и идентификаторов, однако получаю вывод с информацией о моей модели:

{ "messages" : { "formatter" : { "as_columns" : [  ],
      "class" : "My\\FooBundle\\Model\\Message",
      "collection_name" : "PropelObjectCollection",
      "current_objects" : [  ],
      "db_name" : "fooDB",
      "has_limit" : false,
      "peer" : "My\\FooBundle\\Model\\MessagePeer",
      "with" : [  ]
    },
  "model" : "My\\FooBundle\\Model\\Message"
} }

Я убедился, что мой пакет jmsserializer имеет патч propelcollectionhandler.php.

У меня есть это в моем app/config/config.yml

jms_serializer:
    metadata:
        auto_detection: true
        directories:
            Propel:
                namespace_prefix: "My\\FooBundle\\Model\\om"
                path: "@MyFooBundle/Resources/config/serializer"

Я видел, что namespace_prefix пусто в некоторых примерах на Github, потому что они утверждают, что BaseModel в propel не имеет пространства имен, но у моих автоматически сгенерированных базовых моделей propel есть пространство имен, это что-то новое в версии 1.7? Я пробовал это с namespace_prefix и без него, и у меня есть файл Model.om.BaseTableMessage.yml в указанном каталоге.

Кто-нибудь сталкивался с этой проблемой? Как вы это решили? Спасибо!


person eidsonator    schedule 01.12.2013    source источник


Ответы (1)


Решение от Квентина Фаври с сайта https://groups.google.com/d/msg/symfony2/FqiqJ2dqAM8/8b-9xucG7k4J работал у меня.

Добавьте этот код в My/FooBundle/Resources/config/services.yml

parameters:
    jms_serializer.propel_collection_handler.class: JMS\Serializer\Handler\PropelCollectionHandler

services:
    jms_serializer.propel_collection_handler:
        class: %jms_serializer.propel_collection_handler.class%
        tags:
            - { name: jms_serializer.subscribing_handler }
person oujesky    schedule 25.01.2014
comment
Существует также открытая проблема: github.com/schmittjoh/JMSSerializerBundle/issues/349 - person oujesky; 26.01.2014