首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPO3 Extbase JsonView FAL

TYPO3 Extbase JsonView FAL
EN

Stack Overflow用户
提问于 2016-10-04 15:51:40
回答 3查看 1.5K关注 0票数 2

这是我的主计长行动:

代码语言:javascript
复制
public function jsonAction()
{
    $this->view->setVariablesToRender(array('produkte'));
    $this->view->setConfiguration(
        array(
            'produkte' => array(
                '_descendAll' => array(
                    'only' => array('titel', 'beschreibung', 'bild', 'download', 'categories'),
                    '_descend' => array(
                        'bild' => array(),
                        'download' => array(),
                        'categories' => array(),
                    )
                )
            )
        )
    );

    $this->view->assign('produkte', $this->produktRepository->findAll());
}

我得到了一个很好的JSON字符串。不幸的是,我只得到PID和包含文件的UID (FAL)。我如何才能获得完整的对象,或者至少是包含的文件的路径?

代码语言:javascript
复制
/**
 * Returns the bild
 *
 * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $bild
 */
public function getBild()
{
    return $this->bild;
}

/**
 * Returns the download
 *
 * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $download
 */
public function getDownload()
{
    return $this->download;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-05 08:02:47

尝试降至FileReferenceFileReference并公开publicUrl

代码语言:javascript
复制
$this->view->setConfiguration(
    array(
        'produkte' => array(
            '_descendAll' => array(
                'only' => array('titel', 'beschreibung', 'bild', 'download', 'categories'),
                '_descend' => array(
                    'download' => array(
                        '_descendAll' => array(
                            '_only' => array('originalResource');
                            '_descend' => array(
                                'originalResource' => array(
                                    '_only' => array('publicUrl');
                                );
                            );
                        );
                    ),
                )
            )
        )
    )
);
票数 5
EN

Stack Overflow用户

发布于 2016-10-10 12:04:52

originalResource部分是一个计算属性,在调用getter(将自动检索该实体的方法)时,它是如何在Extbase的FileReference模型中实现的。

代码语言:javascript
复制
/**
 * @return \TYPO3\CMS\Core\Resource\FileReference
 */
public function getOriginalResource()
{
    if ($this->originalResource === null) {
        $this->originalResource = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($this->getUid());
    }

    return $this->originalResource;
}

但是,请确保编写正确的JSON视图配置。所有与控件相关的属性都是带有下划线_的前缀--在上面的代码示例中,它应该是_only而不是only。有效的控制-名称是_only_exclude_descend_descendAll_exposeObjectIdentifier_exposedObjectIdentifierKey_exposeClassName.

流程文档中可以找到更多细节,这对于JsonView在TYPO3 CMS中仍然有效。

票数 0
EN

Stack Overflow用户

发布于 2018-10-10 15:04:56

尝试使用\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>代替\TYPO3 3\CMS\Extbase\Domain\ Model \FileReference对模型中的FAL属性。我不需要多个文件,但在我改变这个文件后,我得到了publicUrl。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39856738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档