私はREST APIを持っていて、フィールドにAvatarというフィールドを持つUser
というエンティティを持っていますが、DB Iの名前XXXX.jpgを保存しますが、アバター、例えばwww.mylink.com/XXXX.jpg
。symfonyのパラメータをシリアル化するときのサブスクリプションハンドラインターフェイスの使用
サービスを試していますが、SubscribingHandlerInterface
を実装していますが、どのように使用できるか分かりません。
私は、このサービスでは、この方法があります:
class UrlManager implements SubscribingHandlerInterface
{
public static function getSubscribingMethods()
{
return array(
array(
'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
'format' => 'json',
'type' => 'AppBundle/Entity/User',
'method' => 'serializeUrlAvatar',
),
);
}
public function serializeUrlAvatar(User $user)
{
$url = 'www.mylink.com';
return array(
"avatar" => $url . $user->getAvatar()
);
}
}
が、どのように私は私がシリアライズ時にURLを変更するには、このサービスを呼び出すことができます。私はこのように、この関数を呼び出す私のコントローラで 更新
app.url_converter_service:
class: AppBundle\Service\UrlManager
tags:
- { name: jms_serializer.subscribing_handler }
:
$result = $this->get('app.url_converter_service')->serializeUrlAvatar($user);
$json = $this->get('jms_serializer')->serialize($result, $_format);
return new Response($json, 200, ['Content-Type' => 'application/' . $_format]);
だから私の質問が存在し、あるservice.yml
で
$_format = 'json';
$json = $this->get('jms_serializer')->serialize($user, $_format);
return new Response($json, 200, ['Content-Type' => 'application/' . $_format]);
: は、今私はこれを行います最初の行を削除し、私がシリアル化するとき(URLを追加)正しくシリアル化する方法?
あなたは 'serializeUrlAvatar'の実装が不足しているようです - どこですか?単にデータ配列を変更して返すので、完了しました – LBA
ああ、はい!申し訳ありませんが、質問を編集します。 – ximo12
あなたの '$ json'の結果は何ですか? – LBA