Я пытаюсь следовать руководству Уильяма Дюрана здесь для создания 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
в указанном каталоге.
Кто-нибудь сталкивался с этой проблемой? Как вы это решили? Спасибо!