1

ここでWilliam Durand のチュートリアルに従って、fosrest バンドルと推進力を使用して REST API を作成しようとしています。2日前から連載に頭を悩ませています。同様の問題に遭遇したユーザーを何人か見つけましたが、解決策は見つかりませんでした.

これが私のコントローラーです:

/**
 * @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"
} }

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_prefixin propel には名前空間がないと主張しているため、Github のいくつかの例で が空白になっているのを見てきましたBaseModelが、自動生成された propel ベース モデルには名前空間があります。これは 1.7 で何か新しいことですか? の有無にかかわらず試してみましたが、指定したディレクトリにファイルがありますnamespace_prefixModel.om.BaseTableMessage.yml

誰かがこの問題に遭遇しましたか? どのように解決しましたか?ありがとう!

4

1 に答える 1

4

https://groups.google.com/d/msg/symfony2/FqiqJ2dqAM8/8b-9xucG7k4Jの Quentin Favrie のソリューションが役に立ちました。

このコードを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 }
于 2014-01-25T19:43:13.757 に答える