如何在 Flux FlexForm 配置中选择和存储 ContentElement UID?

Posted

技术标签:

【中文标题】如何在 Flux FlexForm 配置中选择和存储 ContentElement UID?【英文标题】:How to select and store ContentElement UID in Flux FlexForm Configuration? 【发布时间】:2014-01-16 11:27:02 【问题描述】:

我目前正在构建一个带有 Flux 和 Fluidpages 的 TYPO3 PageTemplate(都是 GitHub Master-Branch)。 我希望有可能从 PageTree 中选择一些 ContentElements 并将 UID 存储在一个变量中以供以后渲染。

我将 Flux TreeField 与 RelationField 相结合的第一种方法:

  <flux:form.sheet name="content" label="content settings">
    <flux:field.tree
      name="treetest"
      label="treetest"
      table="pages"
      parentField="pid"
      foreignLabel="title"
      multiple="true"
      minItems="0"
      maxItems="1000"
      size="8"
      expandAll="false"
    />
    <flux:field.relation
      name="relationtest"
      label="relationtest"
      table="tt_content"
      condition="AND tt_content.pid IN (treetest)"
      multiple="true"
      size="8"
      minItems="0"
      maxItems="3"
    />
  </flux:form.sheet>

这很遗憾导致 SQL 错误,因为最后一个条件插入为:

  AND tt_content.pid IN (60|foo)

其中 'foo' 是 UID 60 的 SysFolder 的标题。

前端的调试输出将“treetest”字段打印为:

  treetest => '60' (2 chars)

“relationtest”字段的条件为:

  condition => 'AND tt_content.pid IN (60)' (26 chars)

问题:

    事实上,我在这里遗漏了一些东西,如果有任何提示,我将不胜感激,关键在哪里?

    是否有其他解决方案可以从 PageTree 中选择 ContentElement?

【问题讨论】:

【参考方案1】:

1) 您可能有默认值、继承值或包含其他值的断开连接的 XML。要 100% 确定这些都不是您的原因,请在全新的页面上尝试相同的操作。您的代码和选择页面 UID 的预期结果正是值 60 - 不多不少。

2) 在编辑内容元素或页面时,您可能会发现在 foreign_table_where 中使用 ###STORAGE_PID### 标记并选择允许内容选择的页面(作为 Behavior 选项卡中的值)更容易。此值的额外好处是可以仅允许某些用户或用户组或管理员使用。

【讨论】:

以上是关于如何在 Flux FlexForm 配置中选择和存储 ContentElement UID?的主要内容,如果未能解决你的问题,请参考以下文章

从 Flexform 上传图像后出现 Fluid TYPO3 Flux 500 错误

Typo3 Fluid:渲染flux:flexform.field.wizard.link的正确方法是啥?

Fluid TYPO3:更新后出错:无法分析类:FluidTYPO3\Flux\ViewHelpers\Flexform\SheetViewHelper 可能未加载或没有自动加载器?

从插件配置中删除默认的 pi flexform 字段 - 错字3

如何从 FlexForm 到 Controller 获取价值

助焊剂 TCA db 组