【问题标题】:TYPO3 CONTENT select pass Argument to USER/USER_INTTYPO3 CONTENT 选择将参数传递给 USER/USER_INT
【发布时间】:2020-06-23 14:54:46
【问题描述】:

排版:

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

此外,查询有效,但我无法验证/调试

where.field = sys_category_record_mm.uid_foreign = data.uid

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

非常感谢您的帮助

【问题讨论】:

    标签: typo3 typoscript typo3-9.x


    【解决方案1】:

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

    属性是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 提交给打字稿查看器,您可以使用
    &lt;f:cObject typoscriptObjectPath="lib.category" data="{page.uid}" /&gt; 或一个简单的数组,例如:
    &lt;f:cObject typoscriptObjectPath="lib.category" data="{uid:page.uid}" /&gt;

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

    对于只有 uid 值的 viewhelper,您必须使用 current

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

    【讨论】:

    • 谢谢,会调查的。如果我只传递像 这样的单个值,你能否告诉我如何访问传递的参数? where.data = xx 会是什么样子?
    • 答案增强
    • 再次感谢,请在您的回答中提及是否可以将 data.uid/uid/current 传递给 renderObj = USER_INT 部分。传递的值在该块中可用吗?所以我可以勾选你的答案
    • renderObj 你有另一个上下文。上下文是当前(加入的)记录。因为您有连接条件sys_category_record_mm.uid_foreign = data.uid,您可以使用该字段访问data.uid
    猜你喜欢
    • 2012-08-31
    • 2018-11-06
    • 1970-01-01
    • 2017-09-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多