2014-05-19 45 views
1

在我的文件我有我想要存儲的相關節點的一個字段,我定義它是這樣的:如何將phpcr-odm ReferenceMany字段添加到奏鳴曲管理員?

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

我添加使用文檔管理器的相關節點,我可以看到他們在創建的鏈接我樹枝文件。我遇到的問題是允許管理員添加或刪除奏鳴曲管理中的相關節點。

當我使用ORM時,我使用'sonata_type_collection',但它似乎在ODM中不起作用。我得到這個錯誤:

INVALID MODE : s537a4d1c263c0_related_guides - type : sonata_type_collection - mapping : 8

sonata_type_model_list僅適用於ReferenceOne關係和ReferenceMany我得到這個錯誤:

The class 'Doctrine\ODM\PHPCR\ReferenceManyCollection' was not found in the chain configured namespaces 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

有沒有什麼辦法讓這個功能了索納塔聯繫的? BTW我的領域是Doctrine \ ODM \ PHPCR \ ReferenceManyCollection類型來支持@ReferenceMany關係。

+0

例外看起來像學說試圖將ReferenceManyCollection作爲自己映射的文檔類來處理。這是沒有意義的。 sonata_type_collection確實在phpcr-odm中被破壞:https://github.com/sonata-project/SonataDoctrinePhpcrAdminBundle/issues/198 - 希望有人會花時間深入這一天。什麼工作嵌入與sonata_type_collection,例如https://github.com/symfony-cmf/BlockBundle/blob/master/Admin/Imagine/SlideshowBlockAdmin.php – dbu

+0

謝謝!我會研究它。至少我知道我沒有做錯。 – MKoosej

回答

0

對於ReferenceMany嘗試使用 「phpcr_document」:

$formPapper->add('related_guides', 'phpcr_document', 
    array(
     'property' => 'title', 
     'class' => 'Acme\DemoBundle\Document\TargetClass', 
     'multiple' => true, 
    )) 
->end(); 
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(); 
相關問題