2015-11-19 158 views
-1

我在我的内容树中有两个页面sulu 1.0.13。在页面“A”上,我通过内容类型为“单一内部链接”的字段设置了页面“B”的引用。Sulu cmf获取引用者

当我在页面“B”时,我想获得引用页面“A”。我在我的控制器中试过以下代码:

$dm = $this->get('sulu_document_manager.document_manager'); 
$doc = $dm->find('992758cf-1da4-4e45-9ee4-ca9c4ec3998e'); // UUID of page "B" 
$di = $this->get('sulu_document_manager.document_inspector'); 
$node = $di->getNode($doc); 

$refs = $di->getReferrers($doc); // $refs is an empty collection 
$refs = $node->getReferences(); // $refs is an empty collection 
$refs = $node->getWeakReferences(); // $refs is an empty collection 

$ refs始终是一个空集合。

什么是正确的方式来获取推荐页面?

更新:我现在使用的版本1.1.0 RC2

+0

你的问题并不十分清楚。请更清楚地描述您的问题,并尝试自行解决问题。 – Greg

回答

3

可悲的是SingleInternalLink内容类型,目前只是保存UUID作为一个字符串,而不是作为PHPCR一个适当的参考。这也在GitHub Issue中描述。我会重新评估这个问题,看看我们能否在不久的将来解决这个问题。

作为解决方法,您可以使用InternalLinks内容类型,该类型已将其值保存为引用,但可以添加多个链接。

+0

我已经尝试过InternalLinks,现在它可以工作,但是如果我调用'$ refs = $ di-> getReferrers($ doc);'',我会得到两个元素。 “Sulu \ Bundle \ ContentBundle \ Document \ RouteDocument”类型和“Sulu \ Bundle \ ContentBundle \ Document \ PageDocument”类型中的另一个。 – huzi

+0

我对版本1.1.0有问题RC2 – huzi

+0

是的,这个问题在任何版本中都没有修正......没错,我没有想到......你可能必须检查文档是否来自'PageDocument'类型。路由有自己的树,也是引用页面,这就是为什么你得到两个引用。 –