在我的文档中,我有一个字段,我想存储相关的节点,我这样定义:
/**
* @PHPCRODM\ReferenceMany(targetDocument="Symfony\Cmf\Bundle\SimpleCmsBundle\Doctrine\Phpcr\Page", strategy="hard")
*/
protected $related_guides;
我使用文档管理器添加了相关节点,我可以看到它们并在我的twig文件中创建链接。我遇到的问题是允许管理员添加或删除奏鸣曲管理员中的相关节点。
当我使用ORM时,我使用了'sonata_type_collection'但似乎它在ODM中不起作用。我收到了这个错误:
INVALID MODE:s537a4d1c263c0_related_guides - type:sonata_type_collection - mapping:8
sonata_type_model_list仅适用于ReferenceOne关系,而对于ReferenceMany,我收到此错误:
类' Doctrine \ ODM \ PHPCR \ ReferenceManyCollection'在链配置的命名空间Doctrine \ ODM \ PHPCR \ Document,Sandbox \ MainBundle \ Document,Vectorworks \ Bundle \ CmsBundle \ Document,Symfony \ Component \ Routing,Symfony \ Cmf \ 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中获取此功能? BTW我的字段是Doctrine \ ODM \ PHPCR \ ReferenceManyCollection的类型,以支持@ReferenceMany关系。
答案 0 :(得分:0)
对于ReferenceMany,请尝试使用" phpcr_document":
$formPapper->add('related_guides', 'phpcr_document',
array(
'property' => 'title',
'class' => 'Acme\DemoBundle\Document\TargetClass',
'multiple' => true,
))
->end();
答案 1 :(得分: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();