Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2、JMS序列化程序、条令持久集合和FOSRestBundle_Symfony_Doctrine Orm_Fosrestbundle - Fatal编程技术网

Symfony2、JMS序列化程序、条令持久集合和FOSRestBundle

Symfony2、JMS序列化程序、条令持久集合和FOSRestBundle,symfony,doctrine-orm,fosrestbundle,Symfony,Doctrine Orm,Fosrestbundle,我试图弄清楚在使用FOSRestBundle和JMSSerializer时如何在视图中返回DBRef对象 所以在我的文件中 class Advert { //... /** * @var Image[] * @MongoDB\ReferenceMany(targetDocument="AppBundle\Document\Image", cascade={"persist", "update", "remove"}) * @Serializer\G

我试图弄清楚在使用FOSRestBundle和JMSSerializer时如何在视图中返回DBRef对象

所以在我的文件中

class Advert {
    //...

    /**
     * @var Image[]
     * @MongoDB\ReferenceMany(targetDocument="AppBundle\Document\Image", cascade={"persist", "update", "remove"})
     * @Serializer\Groups({"Default", "list", "details"})
     * @Serializer\AccessType("public_method")
     * @Serializer\Accessor(getter="getSerializableImages")
     */
    protected $images;

    //...
}
然后,我的控制器看起来像这样

/**
 * @View(serializerGroups={"details"})
 * @ParamConverter("advert", class="AppBundle:Advert")
 * @param Request $request
 * @param Advert $advert
 * @return array
 * @throws \Doctrine\ODM\MongoDB\LockException
 */
public function getAction(Request $request, Advert $advert)
{
    $this->get('monolog.logger.advert')->info('Advert View', [
        'documents' => [
            'advert' => $advert->toLoggableArray(),
        ],
    ]);

    $advertContact = new AdvertContact();
    $advertContact->setAdvert($advert);

    $form = $this->createForm('AppBundle\Form\AdvertContact\AdvertContactType', $advertContact, [
        'action' => $this->generateUrl('advert_contact_new'),
        'method' => 'post',
    ]);

    return [
        'advert' => $advert,
        'contact_form' => $form->createView(),
    ];
}
我一直在到处寻找解决办法。我最接近的方法是使用JMS的
@Accessor
注释,该方法对文档执行
$this->images->toArray()
,但这不能正常工作,我担心反序列化


任何帮助都将不胜感激

getSerializableMages
返回什么?我猜如果它不是标量,那么序列化程序将不知道如何序列化it@mickadoo我试图按照其他帖子中的建议返回
$this->images->toArray()
。它可以工作,但是返回了没有ID的DBRef。您可以尝试在图像中循环并为每个图像返回一个键值数组吗?我知道这可能不是您想要的自动序列化,但它可能会有问题
getSerializableMages
返回什么?我猜如果它不是标量,那么序列化程序将不知道如何序列化it@mickadoo我试图按照其他帖子中的建议返回
$this->images->toArray()
。它可以工作,但是返回了没有ID的DBRef。您可以尝试在图像中循环并为每个图像返回一个键值数组吗?我知道这可能不是您想要的自动序列化,但它可能很糟糕