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
Forms EXT:Form-从内容对象数据获取布局字段_Forms_Typo3_Typo3 Extensions - Fatal编程技术网

Forms EXT:Form-从内容对象数据获取布局字段

Forms EXT:Form-从内容对象数据获取布局字段,forms,typo3,typo3-extensions,Forms,Typo3,Typo3 Extensions,我试图在ext:formcontent元素中获取内容对象数据的布局字段,以便在选择了特定布局的情况下添加css类。但是,内容对象数据不会添加到流体模板(typo3/sysext/form/Classes/Controller/FormFrontendController.php:73)中,也不会为该元素呈现流体样式内容中的框架容器。 “我的布局”字段的配置如下: TCEFORM.tt_content { layout { types.form_formframework

我试图在ext:formcontent元素中获取内容对象数据的布局字段,以便在选择了特定布局的情况下添加css类。但是,内容对象数据不会添加到流体模板(
typo3/sysext/form/Classes/Controller/FormFrontendController.php:73
)中,也不会为该元素呈现流体样式内容中的框架容器。 “我的布局”字段的配置如下:

TCEFORM.tt_content {
    layout {
        types.form_formframework {
            addItems {
                200 = Blue Form
            }

            removeItems = 1,2,3
        }
    }
}
我还尝试向表单配置本身添加一个新的布局字段:

TYPO3:
  CMS:
    Form:
      ########### FORMEDITOR CONFIGURATION ###########
      prototypes:
        standard:
          ########### DEFAULT FORM ELEMENT DEFINITIONS ###########
          formElementsDefinition:
            Form:
              formEditor:
                editors:
                  9000:
                    identifier: 'layout'
                    group: select
                    templateName: 'Inspector-SingleSelectEditor'
                    label: 'Layout'
                    propertyPath: 'properties.layout'
                    selectOptions:
                      0:
                        value:
                        label: Normal
                      1:
                        value: form--blue
                        label: Blau
这在后端非常有效,但会导致前端出现
不允许的选项“properties”错误,因为表单元素的属性是在
typo3/sysext/form/Classes/Domain/Model/FormDefinition.php:382中硬编码的


你知道如何在这里添加布局选择吗?最好是在内容元素上,因为这将允许我对不同的布局使用相同的表单配置,而不是制作仅在布局中区分的重复表单配置。

内容对象数据在通用模板中可从流体样式的内容中获得。在这里,您可以检查Ctype是否为“form_formframework”,并使用css类包装表单

<f:if condition="{content}">
<f:then>
    {content -> f:format.raw()}
</f:then>
<f:else>
    <f:if condition="{data.CType} == 'form_formframework'">
        <f:then>
            <div class="{data.layout}">
                <f:cObject typoscriptObjectPath="tt_content.{data.CType}.20" data="{data}" table="tt_content"/>
            </div>
        </f:then>
        <f:else>
            <f:cObject typoscriptObjectPath="tt_content.{data.CType}.20" data="{data}" table="tt_content"/>
        </f:else>
    </f:if>
</f:else>
</f:if>

{content->f:format.raw()}

我们可以像这样将流体模板布局({f:if(条件:{data.layout}',然后:'blue')})添加到默认流体样式内容/Resource/Private/Layouts/default.html(我们可以在我们的网站模板中覆盖流体模板)-而不考虑覆盖表单的finisher和Flexform值:

<f:if condition="{data.CType} == 'form_formframework'">
    <f:then>
        <section id="c{data.uid}" class="form-section {f:if(condition:'{data.layout}',then:'blue')}">
            <f:if condition="{data._LOCALIZED_UID}">
                <a id="c{data._LOCALIZED_UID}"></a>
            </f:if>
            <f:render section="Before" optional="true">
                <f:render partial="DropIn/Before/All" arguments="{_all}" />
            </f:render>
            <f:render section="Header" optional="true">
                <f:render partial="Header/All" arguments="{_all}" />
            </f:render>
            <f:render section="Main" optional="true" />
            <f:render section="Footer" optional="true">
                <f:render partial="Footer/All" arguments="{_all}" />
            </f:render>
            <f:render section="After" optional="true">
                <f:render partial="DropIn/After/All" arguments="{_all}" />
            </f:render>
        </section>
    </f:then>
    <f:else>
        <div id="c{data.uid}" class="frame frame-{data.frame_class} frame-type-{data.CType} frame-layout-{data.layout}{f:if(condition: data.space_before_class, then: ' frame-space-before-{data.space_before_class}')}{f:if(condition: data.space_after_class, then: ' frame-space-after-{data.space_after_class}')}">
            <f:if condition="{data._LOCALIZED_UID}">
                <a id="c{data._LOCALIZED_UID}"></a>
            </f:if>
            <f:render section="Before" optional="true">
                <f:render partial="DropIn/Before/All" arguments="{_all}" />
            </f:render>
            <f:render section="Header" optional="true">
                <f:render partial="Header/All" arguments="{_all}" />
            </f:render>
            <f:render section="Main" optional="true" />
            <f:render section="Footer" optional="true">
                <f:render partial="Footer/All" arguments="{_all}" />
            </f:render>
            <f:render section="After" optional="true">
                <f:render partial="DropIn/After/All" arguments="{_all}" />
            </f:render>
        </div>
    </f:else>
</f:if>

我希望这对大家都有帮助