1

在我的文档中,我有一个要存储相关节点的字段,我将其定义如下:

/**
 * @PHPCRODM\ReferenceMany(targetDocument="Symfony\Cmf\Bundle\SimpleCmsBundle\Doctrine\Phpcr\Page", strategy="hard")
*/
protected $related_guides;

我使用文档管理器添加了相关节点,我可以看到它们并在我的 twig 文件中创建了链接。我遇到的问题是允许管理员在奏鸣曲管理员中添加或删除相关节点。

当我使用 ORM 时,我使用了“sonata_type_collection”,但它似乎在 ODM 中不起作用。我收到了这个错误:

无效模式:s537a4d1c263c0_related_guides - 类型:sonata_type_collection - 映射:8

sonata_type_model_list 仅适用于 ReferenceOne 关系和 ReferenceMany 我收到此错误:

在链配置的命名空间 Doctrine\ODM\PHPCR\Document、Sandbox\MainBundle\Document、Vectorworks\Bundle\CmsBundle\Document、Symfony\Component\Routing、Symfony\Cmf 中找不到类“Doctrine\ODM\PHPCR\ReferenceManyCollection” \Bundle\RoutingBundle\Model, Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr, Symfony\Cmf\Bundle\MenuBundle\Model, Symfony\Cmf\Bundle\MenuBundle\Doctrine\Phpcr, Symfony\Cmf\Bundle\ContentBundle\Model , Symfony\Cmf\Bundle\ContentBundle\Doctrine\Phpcr, Symfony\Cmf\Bundle\BlockBundle\Model, Symfony\Cmf\Bundle\BlockBundle\Doctrine\Phpcr, Symfony\Cmf\Bundle\SimpleCmsBundle\Doctrine\Phpcr, Symfony\Cmf \Bundle\SeoBundle\Model, Symfony\Cmf\Bundle\SeoBundle\Doctrine\Phpcr, Symfony\Cmf\Bundle\MediaBundle\Doctrine\Phpcr

有什么方法可以从 Sonata Admin 中获取此功能?顺便说一句,我的字段是 Doctrine\ODM\PHPCR\ReferenceManyCollection 的类型,以支持 @ReferenceMany 关系。

4

2 回答 2

0

对于 ReferenceMany 尝试使用“phpcr_document”:

$formPapper->add('related_guides', 'phpcr_document', 
    array(
        'property' => 'title',
        'class'    => 'Acme\DemoBundle\Document\TargetClass',
        'multiple' => true,
   ))
->end();
于 2014-12-05T10:29:07.037 回答
0

上面的代码似乎有点老了:对于 Symfony 3.3,使用下面的代码:

use Doctrine\Bundle\PHPCRBundle\Form\Type\DocumentType;
...
$formPapper->add('related_guides', DocumentType::class, 
        array(
            'choice_label' => 'title', // where TargetClass::getTitle()
            'class'    => 'Acme\DemoBundle\Document\TargetClass',
            'multiple' => true,
       ))
    ->end();
于 2017-10-07T07:51:44.643 回答