写真を含むオブジェクトの親指とプレビューへのリンクを提供するタスクがありました。 私はすでにコードでLiipImagineBundleを使用しており 、このバンドルを使用してAPIでリンクを生成したいと考えていました。 必要なソリューションを探した後、このための既製のバンドルがないことに驚きました。
プロジェクトは積極的にサポートされていないため、私は明らかにJMSSerializerBundleのファンではないことを伝えたいと思います。 Symfony Serializerの方が優れていますが、人生はそれほど単純ではありません)
また、APIはオープンされる予定であり、応答でサムへのリンクを送信する必要があります。 ドックに書き込むだけで、 http://example.com/resolver/filter/image/name.jpgというURLを使用して、動作しない親指を取得します。
トピックに戻ります。 自転車を書く必要があることを認識して、私はそれを書き始めました。 それが必要とされたプロジェクトは小さくないため、別の構成がサポートされるようにする必要がありました。 たとえば、画像には複数のフィルタが含まれている場合と含まれていない場合があります。 VichUploaderBundleを使用してすべてをサーバーにアップロードするため、シリアル化可能なフィールドがこのバンドルのフィールドになり得るという事実を考慮して、リンクを生成する必要がありました。
JMSSerializerBundleには、使用したserializer.pre_serializeおよびserializer.post_serializeオブジェクトをシリアル化するときに発生する2つのイベントがあります。
- serializer.pre_serializeオブジェクトの情報を変更する必要がある場合に使用されます。 たとえば、元の画像へのリンクを持つ画像フィールドがありましたが、この場所にサムリンクを挿入する必要があります。
- serializer.post_serializeシリアル化の結果に追加情報を追加する場合に使用します。 たとえば、元の画像へのリンクを持つ画像フィールドがあり、どこかで既に使用されているため上書きできません。たとえば、新しいimage_thumbフィールドを追加して、そこにサムリンクを配置できます。
bundlaおよびバンドル自体の使用に関するドキュメントは、GitHub LiipImagineSerializationBundleにあります。