【问题标题】:TYPO3 StoragePid and CurrentTYPO3 StoragePid 和 Current
【发布时间】:2012-06-17 20:25:41
【问题描述】:

我构建了一个简单的注释 extbase 扩展,我想将它与打字稿一起包含在项目扩展(也是 extbase)中。项目扩展中的流体代码如下所示:

<f:for each="{project.reports}" as="report">
    ...Content...
    {report -> f:cObject(typoscriptObjectPath: 'lib.comments')}
</f:for>

“报告”是一个 id 数组。 lib.cmets 排版如下所示:

lib.comments = USER
lib.comments  {
    userFunc = tx_extbase_core_bootstrap->run
    extensionName = Comments
    pluginName = Comments
    persistence.storagePid = ?
}

StoragePid 应该与报告 id 匹配,所以我尝试了: persistence.storagePid.cObject = TEXT persistence.storagePid.cObject.current = 1

但它不起作用。有谁知道将“当前”设置为 storagePid 的正确方法是什么?

【问题讨论】:

    标签: typo3 typoscript fluid extbase


    【解决方案1】:

    您可以通过将方法放在开头来禁用存储库中的存储 PID 检查:

    public function initializeObject() {
        $this->defaultQuerySettings->setRespectStoragePage(FALSE);
    }
    

    然后使用当前页面的id,将其作为公共参数传递给存储库查找器并包含为公共约束。

    当然,您可以照常获取当前页面的 UID:

    $currentUid = $GLOBALS['TSFE']->id;
    

    【讨论】:

    • 嗨,马库斯,我不知道我是否理解正确。我将评论包括 3-5 次(在 for 数组中)。我不想将 storagePid 设置为当前页面,进一步设置为我在“报告”中设置的 id。 lib.cmets = TEXT lib.cmets.current=1 工作正常。但为什么不作为 cObject 呢?
    • 那么,配置中的current 是什么意思?对不起,我不明白:/
    • 我的意思是当前的 stdWrap 属性。当我在流体中设置以下代码时:{report -> f:cObject(typoscriptObjectPath: 'lib.cmets')} - 是“报告”当前。因此,如果我在打字稿中设置:lib.cmets = TEXT lib.cmets.current=1 Fluid 将呈现现场报告。
    • 我遇到了完全相同的问题,并尝试使用 .current 和 .field 从 cObject 流体视图助手中获取值。如上所述,它在创建 cObject TEXT 时工作正常,但如果它是 USER 或 USER_INT 似乎是不可能的。有谁知道如何从流体模板获取值到 TypoScript 用户函数?
    【解决方案2】:

    persistence.storagePid.field = uid

    与“report -> f:cObject”一起传递的“report”的所有字段都将可用于 stdWrap 属性“.field”。

    你也可以

    persistence.storagePid.debugData = 1
    

    列出 $cObj->data 的所有可用字段

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多