問題タブ [jmsserializerbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3531 参照

php - JMS シリアライザーはシリアライズできません: プライベート プロパティにアクセスできません

JMS シリアライザー バンドルを使用して Doctrine2 エンティティを JSON にシリアライズしようとしています。すべての設定が完了しましたが、何かを JSON にシリアル化しようとすると、次のエラーが発生します。

Fatal error: Cannot access private property Snow\FrontBundle\Entity\District::$id in E:\School\SocialGEO Augustus\Coding\socialgeo-php\vendor\jms\metadata\src\Metadata\PropertyMetadata.php on line 46

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

最後に、これは私の District エンティティです。

なぜこれが起こっているのか誰にも分かりますか?エンティティですべてを公開に設定すれば、もう少し先に進むことができるように思えますが、そうすべきではないと何かが教えてくれます。そうすると、次のような Symfony2 エラーが表示されます。

ご協力いただきありがとうございます。

0 投票する
1 に答える
678 参照

doctrine-odm - Symfony2.3.​​4 と ODM で JMSSerializerBundle のエラーが発生する

エラーは ServiceNotFoundException です: サービス "jms_serializer.metadata_driver" は、存在しないサービス "doctrine" に依存しています。

composer.json で私の構成:

"jms/serializer-bundle": "dev-master", "jms/di-extra-bundle": "dev-master"

どうしたの?

0 投票する
3 に答える
2557 参照

php - FOSRestBundle/JMS Serializer でフィールドの値を変更するには?

エンティティに「画像」フィールドがあります。ただし、アクションによっては、元の画像ではなく、画像のプレビュー (LiipImagineBundle で作成) を表示したい場合があります。私が想像できる1つの解決策:

しかし、エンティティに深い子エンティティがある場合、コードが非常に混乱するため、私はそれが好きではありません。

正しく行う方法は?

0 投票する
0 に答える
709 参照

mongodb - JMSSerializerBundle、MongoDB、および XML メタデータ

私は一晩中これについて頭を悩ませてきたようです。ドキュメント クエリの結果をシリアル化しようとするたびに、bool(false)の結果が返されます。おそらく、これはシリアル化が失敗していることを意味します (すばらしい! 失敗した理由を喜んで教えてくれるでしょうか? いいえ? そうは思いませんでした。 )

マッピングが保持されているJMSSerializerBundle場所を伝えました。例:FOSUserBundle

Model.User.xmlなどの非常に単純な XML シリアライザー メタデータ ファイルを定義しました。

そして、テストコントローラーでは、より洗練された何かをしようとする前にシリアライザーを手動で呼び出しています。

結果?常にbool(false)

Userただし、新しいオブジェクトを手動で作成すると、シリアル化は正常に機能します。たとえば、次のようになります。

何かご意見は?私はこれについて私の心を失う準備ができています。

編集:また、さらに検討すると、シリアライゼーション メタデータが尊重されているようには見えないことに注意してください。上記のように、私はユーザー名のみを公開していますがUser、コントローラーで新しいものを作成してシリアル化すると、公開されているだけでなくusernameenabledlockedexpiredroles、およびcredentials_expired. null 以外のデータが含まれている場合、すべてのフィールドが表示されると思います。

編集 (2): ;DoctrineObjectConstructorのデフォルトのオブジェクトコンストラクターを使用することへの参照を見てきました。私の問題を解決できることを期待して、この回答serializerで特定された手順を実行しました。悲しいかな、彼らはそうしませんでした(その答えと質問は、とにかく逆シリアル化のためのものだったようです)、bool(false)の結果は持続します。

編集 (3):シリアライゼーション メタデータが取得されなかった問題は、私が尋ねた別の質問: JMSSerializerBundle mix auto detection and explicit directory?auto_detectionに示されているように、と の明示的な宣言が混在しているためのようです。directories

0 投票する
2 に答える
2602 参照

php - JMSSerializerBundle は自動検出と明示的なディレクトリを混在させていますか?

auto_detectionサードパーティのモデルの場所を指定してオーバーライドしながら、一部のバンドルに使用することは可能directoriesですか?

過去数日間、 JMSSerializerBundleを使用して、それを理解し、個人的なプロジェクトで動作させようとしてきましたが、サードパーティのメタデータを使用auto_detectionおよび指定する方法はないようです。directories

FOSUserBundle Model.User.ymlシリアライゼーション データを書き込むと、たとえば次のようになります。

指定されたディレクトリに配置し、次のauto_detectionように true に設定します。

シリアル化メタデータは取得されません。

ただし、同じメタデータ ファイルをFOS/UserBundle/Resources/config/serializer (ベンダー バンドル内) に配置し、構成を次のように変更すると:

シリアル化メタデータが読み取られ、適切に適用されます。

0 投票する
1 に答える
3193 参照

mongodb - リソースは、シリアル化されたデータ MongoDB JMSSerializer ではサポートされていません

すべてのホール データを MongoDB に保存し、それを回復し、FOSRest を使用して表示する API (DoctrineMongoDBBundle と FOSRestBundle に基づく) を開発しようとしています。

データベースに保存されているオブジェクトのリストを表示しようとすると、次のようになります。

"message": "シリアル化されたデータではリソースはサポートされていません。パス: Monolog\Handler\StreamHandler -> Symfony\Bridge\Monolog\Logger -> Doctrine\Bundle\MongoDBBundle\Logger\Logger -> Doctrine\Bundle\MongoDBBundle\Logger\ AggregateLogger -> Doctrine\ODM\MongoDB\Configuration -> Doctrine\MongoDB\Connection -> Doctrine\ODM\MongoDB\LoggableCursor", "class": "JMS\Serializer\Exception\RuntimeException",

FOS の config.yml は次のとおりです。

そして、それが私のコントローラーです:

整形式の配列を返そうとしましたが、すべての Service オブジェクトを配列に結合した場合と同様に、エラーは表示されませんでした。

PECLを使用してMongo PHP拡張機能をインストールし、いくつかの構成を変更して解決しようとしましたが、何も変更されていません。

何が起こっているのか知っている人はいますか?

0 投票する
1 に答える
1152 参照

php - JMSシリアライザの注釈

Doctrine2 とJMS Serializerを使用していますが、シリアライザーが奇妙なエラーをスローしています:

AnnotationException: [Semantical Error] クラス "Doctrine\ORM\Mapping\PrePersist" に @Annotation の注釈が付けられていません。このクラスを注釈として使用できますか? その場合、"Doctrine\ORM\Mapping\PrePersist"のクラスドキュメント コメントに @Annotation を追加する必要があります。本当に注釈がない場合は、@IgnoreAnnotation("ORM\PrePersist") をメソッド User\User::prePersist()のクラスdoc コメントに追加する必要があります。

これは、エンティティ オブジェクトをシリアル化しようとすると発生します。これらは、エンティティ クラスの関連ビットです。

開いDoctrine\ORM\Mapping\PrePersistたところ、注釈@Annotation付けられています。したがって、バグは Doctrine2 ではなく JMS 側にあるようです。

何が原因でしょうか?

注: この場合の正しいタグは、「jmsserializerbundle」ではなく「jmsserializer」です。必要に応じて誰かが作成するか、このメモを削除してください。