我试图按照William Durand的教程来创建一个使用fosrest bundle和push的rest api。两天来,我一直在为连载而头疼。我发现一些用户遇到了类似的问题,但没有找到解决方案。
这是我的控制器:
/**
* @Rest'View
*/
public function allAction(){
$messages = MessageQuery::create()->find();
return array('messages' => $messages);
}
我期待着消息和id的输出,但我得到了一个关于我的模型的信息输出:
{ "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"
} }
我已经确保我的jmsseralizer捆绑包具有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"
我在Github上的一些例子中看到namespace_prefix
是空白的,因为他们声称推进中的BaseModel
没有命名空间,但我的自动生成的推进基础模型有命名空间,这在1.7中是新的吗?我已经尝试过使用和不使用namespace_prefix
,并且我在指定的目录中有一个Model.om.BaseTableMessage.yml
文件。
有人碰到这个问题了吗?你是怎么解决的?谢谢
来自Quentin Favrie的溶液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 }