Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在具有TYPO3 10的FluidTYPO3 flux表单中具有多个图像部分?_Typo3_Fluid_Flexform - Fatal编程技术网

如何在具有TYPO3 10的FluidTYPO3 flux表单中具有多个图像部分?

如何在具有TYPO3 10的FluidTYPO3 flux表单中具有多个图像部分?,typo3,fluid,flexform,Typo3,Fluid,Flexform,我已经使用FluidTYPO3(flux和vhs)运行TYPO3网页很多年了。由于打字错误3-10,我面临一个重大问题。我会很快写下我的用例,我是如何解决它的,然后10个LTS的问题是什么 用例: 我想要一个使用FluidTYPO3/flux的时间线的内容元素模板。时间线上的每个“点”都应该有一个标题、一些文本和一些可选的图像。总而言之,相当基本(或者我是这么认为的) 到目前为止的解决方案(TYPO3您提到的bug报告已经包含了解决方案,因为这里描述的实际问题是flexform中的FAL字段使用

我已经使用FluidTYPO3(flux和vhs)运行TYPO3网页很多年了。由于打字错误3-10,我面临一个重大问题。我会很快写下我的用例,我是如何解决它的,然后10个LTS的问题是什么

用例:
我想要一个使用FluidTYPO3/flux的时间线的内容元素模板。时间线上的每个“点”都应该有一个标题、一些文本和一些可选的图像。总而言之,相当基本(或者我是这么认为的)


到目前为止的解决方案(TYPO3您提到的bug报告已经包含了解决方案,因为这里描述的实际问题是flexform中的FAL字段使用相同的名称

所以不是

image
根据错误报告,应该有

settings.foreground.image
这当然不起作用,因为点是路径的一部分,但不是名称的一部分。 但实际上,用下划线替换点并在同一flexform选项卡中使用一些后缀应该可以做到:

settings.foreground.settings_foreground_image
settings.foreground.settings_foreground_image2
这样你就可以确保

  • flexform中的字段名是唯一的
  • sys_file_引用条目中的实际字段名已包含完整路径信息
  • 您可以使用该信息来获取图像,即在数据处理器中获取图像,并且仍然知道它们实际上属于FlexForm字段

  • Sitll我建议完全远离FlexForms(因此也包括Flux),转而使用数据库表中的“实”字段。

    似乎TYPO3核心板载方法的唯一解决方法是使用Flux容器,该容器具有一个包含简单默认“带图像的文本”或“带媒体的文本”的单列元素,然后忽略这些元素的附加选项,只渲染必要的字段

    对于Gridelements,这称为“功能容器”,因为容器决定这些元素的行为和外观,而元素本身根本不必是自定义元素


    此外,这使得访问这些元素的内容(即在执行搜索查询时)更加容易。

    我发现了另一种可能适用于某些用例的解决方法:

    如果
    useFalRelation
    参数设置为true,甚至在TYPO3 v10 LTS和可重复的FlexForm部分中,仍然可以使用
    flux:field.file
    字段。这将把
    sys\u file
    记录ID(以逗号分隔)放在字段中,而不是原始文件名中。它们可以用作例如的
    src
    参数。g、 ,
    f:image
    与文件名一样,因此不必修改CE模板本身。所有
    useFalRelation
    设置为false的现有CE都需要迁移,以便用sys\u文件UID替换文件名


    这比
    inputLink
    解决方案要好一点,因为它允许多个图像。

    虽然这适用于多个顶级图像字段,但不适用于Flexform节/对象。或者是这样吗?关于DB表的使用,这当然是一个解决问题的有效方法。然而,我发现这两个他开发过程(必须创建数据库表、TCA、前端插件等)和用户体验(必须创建“插件”内容元素和单独显示的数据)与通量不相称。此外,我不是超级煽动迁移(=重新创建内容)30 +TyPO3安装:DUI不需要任何“前端插件”。要使用Fluid显示tt_内容的其他数据字段,因为不管其中有多少字段,整个数据数组都将被推送到Fluid模板中。剩下的工作将由数据处理完成,并通过sys_文件引用等添加图像。TCA的工作与FlexForms完全相同,因为FlexForms只是一个示例TCA结构的XML表示。根据您提到的bugreport:"从技术上讲,问题在于当您保存一个包含FlexForm和FAL字段的记录时,FAL关系使用字段名存储,而不考虑嵌套,这意味着所有关系在保存后都有字段名图像。当然,当您重新加载表单时,预填充FAL关系字段的方法是n在所有字段中检测相同的关系。”所以对我来说,这听起来很像:“使用不同的字段名可以解决问题"理论上,不同的字段名确实可以解决这个问题,但AFAIK对于可重复节中的字段,此选项不存在。您只能在TCA中为字段定义一个字段名-参见示例XML。如果用户将对象的多个实例添加到节中,所有实例都将在FAL关系上获得相同的字段名,因此共享相同的文件。字段名需要包含一个索引才能实际工作。