Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Pimcore:从可编辑链接检索文档或页面_Php_Zend Framework_Relationship_Pimcore - Fatal编程技术网

Php 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()

我正在尝试从Pimcore中的可编辑链接检索文档对象或页面对象。根据,我可以使用以下方法:

  • getHref()
    将此链接的路径设置为
    STRING
  • getText()
    获取链接的文本作为
    STRING
  • getTarget()
    将链接的目标获取为
    STRING
  • getParameters()
    获取链接的查询参数为
    STRING
  • getAnchor()
    获取链接的锚文本作为
    STRING
  • getTitle()
    获取链接的标题为
    STRING
  • getRel()
    获取链接的rel文本作为
    STRING
  • getTabindex()
    获取链接的tabindex作为
    STRING
  • getAccessKey()
    将链接的访问密钥获取为
    STRING
  • isEmpty()
    可编辑文件是否为空
    BOOL
ZEND PHP:

<?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方法即可。

太棒了,我会尝试一下,然后再与您联系。谢谢工作完美。谢谢。很高兴我能帮忙!太棒了,我会试试看,然后再打给你。谢谢工作完美。谢谢。很高兴我能帮忙!