TYPO3 内容 select 将参数传递给 USER/USER_INT

TYPO3 CONTENT select pass Argument to USER/USER_INT

打字错误:

lib.category = CONTENT
lib.category {
  table=sys_category
  select {
    pidInList = root
    selectFields = sys_category.*
    join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
    where.field = sys_category_record_mm.uid_foreign = data.uid
    languageField = 0
  }
  renderObj = USER_INT
  renderObj {
    userFunc = InstantAitExt\AitContacts\GetPageCategories->testExecute
    alias = TEXT
    alias.value = data.uid
  }
}

所以我必须将 1-x 个参数传递给 testExecute。其中一个参数应该包含给定页面的 uid。此 uid 通过

传递给 lib.category=CONTENT
<f:cObject typoscriptObjectPath="lib.category" data="{page}" />

所以data.uid基本上是page.data.uid

如果我将 data.uid 传递给 alias.value,参数将“data.uid”作为字符串而不是我需要的实际值。

那么如何将实际的 pageId 传递给 alias.value

此外,查询有效,但我无法 verify/debug

where.field = sys_category_record_mm.uid_foreign = data.uid

检查查询是否真的获得了正确的值(视图中的页面 ID)

非常感谢帮助

你不能调试它,因为它是一个语法错误。

属性是 where,如果您使用 where.field,您希望从(当前上下文的)字段设置值。等号后应为字段名称。

但是你给出一个表达式sys_category_record_mm.uid_foreign = data.uid。那个没法评价。

你想要的是一个带有数据的表达式。此数据应被替换。
所以你要么对替换的数据(或字段)使用换行

where.data = data.uid
where.wrap = sys_category_record_mm.uid_foreign = |

等于

where.field= uid
where.wrap = sys_category_record_mm.uid_foreign = |

因为data是当前上下文,所以您可以直接访问该字段。

或者您使用 insertData:

where = sys_category_record_mm.uid_foreign = {data.uid}
where.insertData = 1

编辑:

如果您只想将页面 uid 提交给您可以使用的 typoscript viewhelper
<f:cObject typoscriptObjectPath="lib.category" data="{page.uid}" /> 或像这样的简单数组:
<f:cObject typoscriptObjectPath="lib.category" data="{uid:page.uid}" />

虽然第二次调用不会更改上面的拼写错误(您只有一个较小的 data 数组,其中仅包含字段 uid,而原始调用包含整个页面记录)。

对于仅具有 uid 值的 viewhelper,您必须使用 current:

where = current
where.wrap = sys_category_record_mm.uid_foreign = |