【发布时间】:2019-05-15 10:02:57
【问题描述】:
手头的问题与 TCA 及其addRecord 选项有关,它应该将新记录保存到由###PAGE_TSCONFIG_ID### 配置的特定 pid。 (TYPO3 8.7.24, php 7.2)
websites 扩展有一个 tx_rwfm_domain_model_websitecategory 和一个 tx_rwfm_domain_model_website 表,通过 m:m 表关联。这个想法是创建网站类别,然后收集分配给一个类别的网站。在 BE 中,类别 (pid=24) 和网站 (pid=12) 在站点树中都有自己的文件夹。 websitecategory 有一个 multiSelectField 可以轻松选择网站并将它们分配给相关类别。而且“网站”还有一个用于类别的 multiSelectField,可以轻松地将网站分配给多个类别。
到目前为止一切正常。
现在我遇到了这种情况:
我想将网站添加到类别中,因此我在列表视图中打开
websitecategory文件夹页面。我现在意识到我要添加的网站尚未创建。
我没有关闭
websitecategory页面,而是点击websites的multiSelectField旁边的“addRecord”(m:m连接)-
会打开一个新窗口以创建新网站,“保存并关闭”将我带回网站类别页面,我可以看到新网站已添加到选择列表中。
李>
重点是:新网站必须在其自己的文件夹页面 (pid=12) 中创建,而不是在网站类别页面 (pid=24) 中创建。为此,有属性###PAGE_TSCONFIG_ID###,我尝试这样配置:
// TCA of websitecategory
return [
[...],
'columns' => [
'websites' => [
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'enableMultiSelectFilterTextfield' => true,
'foreign_table' => 'tx_rwfm_domain_model_website',
'foreign_table_where' => 'AND tx_rwfm_domain_model_website.sys_language_uid IN (-1,0) ORDER BY tx_rwfm_domain_model_website.title ASC',
'MM' => 'tx_rwfm_domain_model_website_websitecategory_mm',
'MM_opposite_field' => 'categories',
'fieldControl' => [
'editPopup' => [...],
'addRecord' => [
'disabled' => false,
'options' => [
'setValue' => 'prepend',
'title' => 'Create a new website record',
'table' => 'tx_rwfm_domain_model_website',
'pid' => '###PAGE_TSCONFIG_ID###',
],
],
]
]
]
[...]
]
按照文档 https://docs.typo3.org/typo3cms/TSconfigReference/8.7/PageTsconfig/TCEform/Index.html?highlight=page_tsconfig_id 我将其添加到我的页面 TSconfig:
// TSconfig
TCEFORM {
tx_rwfm_domain_model_website {
pid.PAGE_TSCONFIG_ID = 12
}
tx_rwfm_domain_model_websitecategory {
pid.PAGE_TSCONFIG_ID = 28
}
}
很遗憾,这不起作用。相反,TYPO3 尝试将其添加到 [root_level] 0, where the table is not allowed。
但是,如果我将 TCA -> addRecord 中的 ###PAGE_TSCONFIG_ID### 替换为 pid 的硬编码值 12,则该网站确实保存在 pid 12 的正确页面文件夹中。
我必须如何配置 TSconfig 才能使保存过程正常工作?
【问题讨论】: