从内联 <flux:form options={...}> 迁移到 <flux:form.option.* /> 时出现通量错误

Flux error when migrating from inline <flux:form options={...}> to <flux:form.option.* />

问题

我收到以下错误,我不知道为什么或如何修复它

Call to undefined method FluidTYPO3\Flux\Form\Container\Sheet::setOption()

我试图在禁用 fluidpages 并升级 flux 9.4 后让一切正常运行。我想我已经正确完成了数据库更新。我正在使用:typo3 8.7,flux 9.4,没有 fluidcontent,没有 fluidpagesvhs

注意:这也在 TYPO3 的 Flux Slack 频道中交叉发布,如果需要,可以更轻松地进行更长时间的实时对话。

我的代码

这是我之前在 fluidbootstraptheme/Resources/Private/Templates/Content/Carousel.html

    <f:section name="Configuration">
        <flux:form id="carousel" options="{group: 'Bootstrap', sorting: 200, icon: 'EXT:fluidbootstraptheme/Resources/Public/Icons/Content/Carousel.png'}">

这是我现在在 fluidbootstraptheme/Resources/Private/Templates/Content/Carousel.html

中的内容
    <f:section name="Configuration">
        <flux:form id="carousel">
            <flux:form.option.group value="Bootstrap" />
            <flux:form.option.sorting value="200" />
            <flux:form.option.icon value="EXT:fluidbootstraptheme/Resources/Public/Icons/Content/Carousel.png" />

其他参考资料

这里有一些可能有用的东西,我可能误解了,因此我的网站还没有工作

感谢@Claus Due,他指出在我的一个文件中,我不小心将 flux:form.option 放在 flux:form.sheet 中,而不是直接放在 flux:form 中。他以后也好意思added code to check for this specific error in Flux

错误的方式

<f:section name="Configuration">
    <flux:form id="progressBar">
        <flux:form.sheet name="progressBar">
            <flux:form.option.group value="Bootstrap" />
            <flux:form.option.sorting value="650" />
            <flux:form.option.icon value="EXT:yourextension/Resources/Public/Icons/Content/ProgressBar.png" />
            <flux:field.checkbox name="settings.progressBarAnimated" default="0" />
            <flux:field.checkbox name="settings.progressBarStriped" default="0" />
            <flux:field.select name="settings.progressBarColor"

正确的方法

<f:section name="Configuration">
    <flux:form id="progressBar">
        <flux:form.option.group value="Bootstrap" />
        <flux:form.option.sorting value="650" />
        <flux:form.option.icon value="EXT:yourextension/Resources/Public/Icons/Content/ProgressBar.png" />
        <flux:form.sheet name="progressBar">
            <flux:field.checkbox name="settings.progressBarAnimated" default="0" />
            <flux:field.checkbox name="settings.progressBarStriped" default="0" />
            <flux:field.select name="settings.progressBarColor"

改进上述代码的方法

@Claus Due 还指出,如果您使用特殊约定,通常不需要使用 flux:form.option.icon

copy whichever icon files you associate with content/page templates, to Resources/Public/Icons/Content or Resources/Public/Icons/Page and name them like the page/content template is named. Then remove the “icon” option from forms

所以对于文件 typo3conf/ext/yourextension/Resources/Private/Templates/Content/ProgressBar.html 中的这个片段,我省略了图标行...

<f:section name="Configuration">
    <flux:form id="progressBar">
        <flux:form.option.group value="Bootstrap" />
        <flux:form.option.sorting value="650" />
        <flux:form.sheet name="progressBar">
            <flux:field.checkbox name="settings.progressBarAnimated" default="0" />
            <flux:field.checkbox name="settings.progressBarStriped" default="0" />
            <flux:field.select name="settings.progressBarColor"

...并确保添加一个位于特定位置并命名为 typo3conf/ext/yourextension/Resources/Public/Icons/Content/ProgressBar.png

的图标

注意:我在上面的代码中将 fluidbootstraptheme 抽象为 yourextension 使在您的特定情况下被替换的内容更加明显。