問題タブ [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.
symfony - FOSRestBundle / JMSSerializerBundle:Symfony2セキュリティロールと対話する
JMSSerializerBundleとFOSRestBundleを使用して、エンティティのいくつかの属性のみをシリアル化して返したい。
たとえば、私はこの属性を持っています:
ユーザー
- ユーザー名
- Eメール
- お誕生日
- コメントコメント
コメントコメント
- 文章
- 日付時刻
ロールROLE_ADMINを持つユーザーは、ユーザーオブジェクト全体のシリアル化されたオブジェクトを取得する必要があります。ROLE_USERは、ユーザー名とすべてのコメントのみを取得する必要があります。
JMSSerializerBundleにSymfony2セキュリティコンポーネントを実装する最も簡単な方法は何ですか?または、これをコントローラーに実装して「手動で」シリアル化する必要がありますか?
どうもありがとうございます
symfony - Symfony と JMSSerializerBundle
JMSSerializerBundle の使用に関して 2 つの問題があります (しかし、私は php プログラミングともちろん symfony の初心者です..)。
それでは、最初の、より緊急の、日付のシリアライズ/デシリアライズから始めましょう。
私のサービスは、「yyyy-mm-dd」という形式の日付パラメーターを受け入れます (形式は「汎用」です。4 桁の年、2 桁の月、2 桁の日を意味します)。
これをデシリアライズしてシリアライズする必要があります。だから..注釈の方が簡単だと思ったので、注釈を追加しました* @SerializerAnnotation\Type("DateTime<'Y-m-d'")
...うまくいきません.ドキュメントには、フォーマットを指定するために二重引用符を使用する必要があると書かれていますが、そうすると、解析例外が発生します.
何かアドバイス?.yml 構成を試すこともできますが、どこに置くべきかわかりません..
2 番目:Person
オブジェクト (POST アクション) を作成すると、パスワード フィールドもあります。だから私はそれをデシリアライズしたいと思います。もちろん、私はそれを逆シリアル化したくありません..シリアル化の除外ポリシーと逆シリアル化の別のポリシーを指定する方法はありますか?
編集:現在、バンドルを削除し、配列からオブジェクトに手動でマップしました (およびその逆)。
symfony - 存在しないサービス「jms_serializer」をリクエストしました
JMSSerializerBundleを使用しようとしていますが、実行後にサービスが一覧表示されませんapp/console container:debug | grep jms_serializer
インストール後
構成する
あなたがどこかで使うなら
エラーが発生しますYou have requested a non-existent service "jms_serializer".
どうすれば修正できますか?
serialization - JMS シリアライザー バンドルを使用してフィールドを追加する
私は通常、JMS シリアライザー バンドルを使用してシリアル化するエンティティを持っています。エンティティ自体には存在しないが、いくつかのデータベースクエリで収集されるいくつかのフィールドをシリアライゼーションに追加する必要があります。
私のアイデアは、カスタム オブジェクトを作成し、フィールドにエンティティ フィールドを入力して、カスタム オブジェクトを追加することでした。しかし、これは、クラスのすべてのバリエーション (私は多くのシリアライゼーション グループを使用しています) に対して行うには、少しトリッキーで費用がかかるようです。
これを行うためのより良い/標準的な方法はありますか? 工場を使う?連載前後のイベント?
シリアライゼーションをリッスンし、エンティティ タイプとシリアライゼーション グループを確認して、カスタム フィールドを追加できますか? ただし、エンティティごとにクエリを作成する代わりに、関連するエンティティのすべてのデータを収集してから追加する方がよいでしょう。どんな助けでも大歓迎です
symfony - yaml での FSCHateoasBundle 構成
FSCHateoasBundle を使用して、API 出力にリンクを追加しようとしています。
ドキュメントには、注釈または yaml を使用して関係を構成する可能性について言及されていますが、yaml 構成を配置する場所と構成方法がわかりません。文書化された注釈は正常に機能します。誰か例がありますか?
私がやろうとしているのは、JMSSerializer で使用される構成ファイルに「関係」セクションを追加することです。FSCHateoasBundle 用に個別の構成ファイルを使用する必要がありますか?
json - Doctrine2、PersistentCollectionおよびJMSシリアライザー
oneToMany関係を持つエンティティがあり、以下を使用して関連アイテムを取得できます。
これにより、 Doctrine \ ORM \ PersistentCollectionオブジェクトが返されます。次に、これを次のようにJMSシリアライザーに渡します。
しかし、結果を$json
使用して出力すると、var_dump()
string(2) "[]"
どちらが間違っています。そこにデータがあります。やりすぎるとデータforeach()
が$this->getQueuedItems()
得られるからです。
JMSシリアライザーを使用してDoctrine\ORM \ PersistentCollectionをJSONにシリアル化するにはどうすればよいですか?
ありがとう
php - SerializerBuilder が Symfony2 で見つからないのはなぜですか?
JMSSerializerBuilder
を使用してオブジェクトをjsonでエンコードし、AJAX呼び出しを行えるようにしようとしています。
composer を使用してバンドルを正常にインストールしました。
次に、公式ドキュメントに従って、私はやっています:
しかし、それは戻ります
FatalErrorException:
エラー: クラス 'Pondip\GeolocBundle\Controller\JMS\Serializer\SerializerBuilder' が C:\Program Files (x86)\wamp\www\Pondip Dev\src\Pondip\GeolocBundle\Controller\DefaultController.php 行 51 に見つかりません
51行目は次のとおりです。
なぜそれが起こっているのですか?行を削除するとuse JMS\Serializer\SerializerBuilder;
(ドキュメントで指定されていないため)、内部サーバーエラーが発生します。
php - JMSSerializer + フォーム/配列
私は SF2 コミュニティの初心者なので、気楽にやってください ;)
JMSSerializerBundle とフォーム/配列の問題に直面しました。私は自分でそれを理解しようと 2 日間費やしましたが、成功しませんでした。これをグループに投稿することにしました。
どのように機能するかを理解できるようにする簡単なテストアプリケーションを構築しています。いよいよ API です。私は FOSRestBundle を使用していますが、完璧に動作します。私の「アプリケーション」全体は完璧に機能しています (開発は非常に迅速かつ効果的でした)。セキュリティ コンポーネント、ファイアウォール、ルーティング、Doctrine の使用方法を学びました (ただし、過去に使用したことがあります)、カスタム認証プロバイダーの作成 - 私は'私は API で立ち往生しています。実際には、その一部です。
フォームの問題: APIBundle に単純な ArticleController を作成しました (テキスト応答は無視してください。デバッグ中にコードを削除して読みやすくしました):
ご覧のとおり、ArticleType フォーム クラスもあります。
問題は何ですか?XMLまたはJSONでリクエストを送信しているときに、フォームデータが検証されていない場合、エラーが発生します(JMSSerializerによって適切にフォーマットされています):
JSON の例:
XML の例:
私の最初の質問は、シリアル化されたフォーム エラーの出力を自動的に変更する方法はありますか?
また、最初の問題に関連する問題があると思います。単一のオブジェクトを返す場合、次の XML 構造が返されます。
配列(複数の記事)を返すときの出力は次のとおりです。
2 番目の質問: 応答の XML/JSON 構造を変更するにはどうすればよいですか?
symfony - Symfony 2.2:シリアル化されたフォームのフィールド名を変更する
jmsシリアライザーバンドルを使用して、作業APIのフォームエラーをシリアル化します。ユーザー登録APIから、次のように作成されたフォームがあります。
間違った情報を送信すると、次のようになります。
エンティティフィールドはplainPasswordなので、passwordという名前を付けて、plainPasswordフィールドに割り当てることができますか?
json - symfony 2 は、新しい場合にのみデシリアライズ後にオブジェクトを永続化します
これで頭を悩ませています。Android アプリにデータを提供する symfony 2 json API があります。
API はデータをシリアライズし、JMSSerializerBundle を使用してまったく問題なくアプリに送信します。次に、GSON を使用してネイティブ Java オブジェクトに逆シリアル化します。
その後、私のアプリは変更を加え、データを API に戻します。
私の問題は、アプリから送信されたjsonを逆シリアル化し、永続化/マージしようとすると、既存のエンティティのデータベースに新しいオブジェクトが作成されることです。symfony 2 はオブジェクトが新しいかどうかを判断できますか? レコードに Id があれば、それが更新され、作成されていないことがわかると思いました。
これが私のコントローラーコードです:
前もって感謝します スティーブ