Php Pimcore:从可编辑链接检索文档或页面
我正在尝试从Pimcore中的可编辑链接检索文档对象或页面对象。根据,我可以使用以下方法:Php Pimcore:从可编辑链接检索文档或页面,php,zend-framework,relationship,pimcore,Php,Zend Framework,Relationship,Pimcore,我正在尝试从Pimcore中的可编辑链接检索文档对象或页面对象。根据,我可以使用以下方法: getHref()将此链接的路径设置为STRING getText()获取链接的文本作为STRING getTarget()将链接的目标获取为STRING getParameters()获取链接的查询参数为STRING getAnchor()获取链接的锚文本作为STRING getTitle()获取链接的标题为STRING getRel()获取链接的rel文本作为STRING getTabindex()
将此链接的路径设置为getHref()
STRING
获取链接的文本作为getText()
STRING
将链接的目标获取为getTarget()
STRING
获取链接的查询参数为getParameters()
STRING
获取链接的锚文本作为getAnchor()
STRING
获取链接的标题为getTitle()
STRING
获取链接的rel文本作为getRel()
STRING
获取链接的tabindex作为getTabindex()
STRING
将链接的访问密钥获取为getAccessKey()
STRING
可编辑文件是否为空isEmpty()
BOOL
<?php if( !empty( $this->block( "topfive_linkblock" ) ) ) : ?>
<ul class="wrapper">
<?php while( $this->block( "topfive_linkblock" )->loop() ) : ?>
<li><?= $this->link( "topfive_links" ); ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
internalId
键中的数字就是我的目标。我的问题是,这样做最合适、最有效的方式是什么?我可以从这个数组安全地访问这个值吗
可接受的解决方案:
<?php if( !empty( $this->block( "topfive_linkblock" ) ) ) : ?>
<ul class="wrapper">
<?php while( $this->block( "topfive_linkblock" )->loop() ) : ?>
<li><?= $this->link( "topfive_links" ); ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
Igor的解决方案在两个方面都有效。我们最终使用HREF editable而不是LINK editable。您可以通过以下方式获得LINK editable中元素的所有数据:
<?php
/** @var \Pimcore\Model\Document\Tag\Link $link */
$link = $this->link( "topfive_links" );
?>
<?php if ($this->editmode): ?>
<?php if( !empty( $this->block( "topfive_linkblock" ) ) ) : ?>
<ul class="wrapper">
<?php while( $this->block( "topfive_linkblock" )->loop() ) : ?>
<li><?= $link ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php else: ?>
<?php
while( $this->block( "topfive_linkblock" )->loop() ) {
$link = $this->link( "topfive_links" );
$linkElementData = $link->getData();
$element = null;
if ($linkElementData["internal"]) {
$elementId = $linkElementData["internalId"];
switch ($linkElementData["internalType"]) {
case "document":
$element = \Pimcore\Model\Document::getById($elementId);
break;
case "asset":
$element = \Pimcore\Model\Asset::getById($elementId);
break;
}
}
if ($element) {
echo get_class($element) . "<br>";
}
}
?>
<?php endif ?>
对于您的用例,href editable可能是更好的选择:
使用href editable,您只需使用getElement方法即可。您可以通过以下方式获得链接可编辑元素的所有数据:
<?php
/** @var \Pimcore\Model\Document\Tag\Link $link */
$link = $this->link( "topfive_links" );
?>
<?php if ($this->editmode): ?>
<?php if( !empty( $this->block( "topfive_linkblock" ) ) ) : ?>
<ul class="wrapper">
<?php while( $this->block( "topfive_linkblock" )->loop() ) : ?>
<li><?= $link ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php else: ?>
<?php
while( $this->block( "topfive_linkblock" )->loop() ) {
$link = $this->link( "topfive_links" );
$linkElementData = $link->getData();
$element = null;
if ($linkElementData["internal"]) {
$elementId = $linkElementData["internalId"];
switch ($linkElementData["internalType"]) {
case "document":
$element = \Pimcore\Model\Document::getById($elementId);
break;
case "asset":
$element = \Pimcore\Model\Asset::getById($elementId);
break;
}
}
if ($element) {
echo get_class($element) . "<br>";
}
}
?>
<?php endif ?>
对于您的用例,href editable可能是更好的选择:
使用href editable,您只需使用getElement方法即可。太棒了,我会尝试一下,然后再与您联系。谢谢工作完美。谢谢。很高兴我能帮忙!太棒了,我会试试看,然后再打给你。谢谢工作完美。谢谢。很高兴我能帮忙!