Typo3 类型3内容选择将参数传递给用户/USER\u INT

Typo3 类型3内容选择将参数传递给用户/USER\u INT,typo3,typoscript,typo3-9.x,Typo3,Typoscript,Typo3 9.x,打字稿: 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_

打字稿:

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}" />
检查查询是否确实获得了正确的值(视图中的页面id)


非常感谢您的帮助

您无法调试它,因为它是一个语法错误

该属性为
where
,如果使用
where.field
,则需要从(当前上下文的)字段设置值。在等号之后是字段的名称

但是您给出了一个表达式
sys\u category\u record\u mm.uid\u foreign=data.uid
。这是无法评估的

您需要的是一个包含数据的表达式。应替换此数据。
因此,您可以对替换的数据(或字段)使用换行符

这等于

where.field= uid
where.wrap = sys_category_record_mm.uid_foreign = |
由于
data
是当前上下文,因此您可以直接访问该字段

或者使用
插入数据

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

编辑:

如果只想将页面uid提交给打字脚本viewhelper,则可以使用
或一个简单的数组,如:

而第二次调用不会更改上面的键入脚本(您只有一个较小的
数据
数组,它只包含字段
uid
,而原始调用包含整个页面记录)

对于仅具有uid值的viewhelper,必须使用当前的
current

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

谢谢,我会调查的。如果我只传递一个值,你能告诉我如何访问传递的参数吗?where.data=xx看起来像什么?答案增强谢谢,请在回答中提及是否可以将data.uid/uid/current传递给renderObj=USER\u INT部分。传递的值在该块中可用吗?因此,我可以在
renderObj
中勾选您的答案。您有另一个上下文。上下文是当前(联接的)记录。由于您具有连接条件
sys\u category\u record\u mm.uid\u foreign=data.uid
,因此可以使用该字段访问
data.uid
where = sys_category_record_mm.uid_foreign = {data.uid}
where.insertData = 1
where = current
where.wrap = sys_category_record_mm.uid_foreign = |