将TYPO3 extbase storagePageIds / storagePid设置为current

时间:2013-06-21 21:31:41

标签: typo3 extbase

我正在使用TYPO3扩展feupload,它依赖于extbase。这是我第一次接触extbase。 但问题是关于extbase的一般情况。

我希望TYPO3在查询中默认包含通常的“IN(当前页面)”pid检查,除非另有说明 - 但在extbase中似乎有所不同。或者至少在我的情况下,它不起作用。

在扩展名中,有一个常量/设置设置,可以设置storagePid。这有效。 但我们不希望为每个页面手动调整该参数。

persistence {
       # cat=feupload/persistence; type=integer; label=Storage PID of records
       storagePid =
}

那么如何让extbase按预期自动获取当前页面的PID?

(子问题:我试图在设置中设置plugin.tx_pluginname.persistence.storagePid.data = {page:uid},但那不起作用.TS看起来有什么用? )

3 个答案:

答案 0 :(得分:8)

嗯,你做的应该工作,但你必须这样写:

plugin.tx_pluginname.persistence.storagePid.data = page:uid

(只有在普通包装中插入数据字段时才需要{})

正如其他人指出的那样,您必须确保在模板中包含扩展程序的配置。

如果上述操作失败,您可以在控制器的initializeAction中以编程方式设置storagePid,如下所示:

$querySettings = $this->myRepository->createQuery()->getQuerySettings();
$querySettings->setStoragePageIds(array($GLOBALS["TSFE"]->id));
$this->myRepository->setDefaultQuerySettings($querySettings);

答案 1 :(得分:2)

我刚刚在TYPO3 ver上测试过。 4.7.x和getText函数起到了作用:

plugin.tx_test {
  persistence {
    storagePid.data = field:uid
  }
}

将其放在主页的TS Setup中,并在必要时覆盖子页面。

答案 2 :(得分:0)

在Typo3 6.1.8上测试

plugin.tx_test {
  persistence {
    storagePid.override.cObject = TEXT
    storagePid.override.cObject.field = uid
  }
}