2013-06-21 58 views
3

我使用TYPO3扩展feupload,它依赖于extbase。这是我第一次与extbase联系。 但问题是关于一般的extbase。设置TYPO3 extbase storagePageIds/storagePid为当前

我希望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不得不看起来像工作?)

回答

6

嗯,你做了什么应该的工作,但你必须把它写这样的:

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

(在{}当你在一个普通的包裹插入数据字段,只需要)

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

如果上面的失败,你可以通过编程设置storagePid在控制器的initializeAction,像这样:

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

我刚刚在TYPO3 ver上测试过。 4.7.x和getText功能的伎俩:

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

把这个主页的TS Setup,并覆盖上如果需要,子页(S)。

+0

我在TYPO3 4.5试了一下与EXT:feupload,它不工作。可能很难重现。你知道extbase是否应该在查询中默认包含“当前pid”条件吗? – Urs

+1

您是否在模板中包含了typoscript配置?不,Extbase默认不包含当前的pid。您必须设置storagePid或在您自己的查询中将其转换。 – Shufla

1

测试在TYPO3的6.1.8

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

**请考虑解释您的代码的作用!** – Victor

+0

使用此代码,您可以将您的storageID设置为当前页面。将代码添加到您的扩展配置文件。 – Rupert