2

有没有办法让 SmartEdit 的子组件中的 OOTB 组件字段可选?

例如,我通过创建子组件来扩展CMSParagraphComponent ,例如扩展 CMSParagraphComponent 的MyCustomParagraphComponent

OOTB CMSParagraphComponent -> content 属性是强制性的,如其 CMS Structure API 中所定义

<bean class="de.hybris.platform.cmsfacades.types.service.impl.DefaultComponentTypeAttributeStructure" p:typecode="CMSParagraphComponent" p:qualifier="content">
    <property name="populators">
        <set>
            <ref bean="richTextComponentTypeAttributePopulator" />
            <ref bean="requiredComponentTypeAttributePopulator" />
        </set>
    </property>
</bean>

requiredComponentTypeAttributePopulator使此属性成为必需的。此外,OOTB SmartEdit 也使用 cmsParagraphComponentValidator 进行后端验证。

现在我想让我的自定义 MyCustomParagraphComponent 的内容属性可选

我尝试使用 required=false 创建新的 populator bean unRequiredComponentTypeAttributePopulator 并将其分配给我的自定义组件的内容属性,但这不起作用

尝试这样的事情......

<bean id="unRequiredComponentTypeAttributePopulator" class="de.hybris.platform.cmsfacades.types.populator.RequiredComponentTypeAttributePopulator">
    <property name="required" value="false" />
</bean>

<bean class="de.hybris.platform.cmsfacades.types.service.impl.DefaultComponentTypeAttributeStructure" p:typecode="PromotionalBannerComponent" p:qualifier="content">
    <property name="populators">
        <set>
            <ref bean="unRequiredComponentTypeAttributePopulator" />
        </set>
    </property>
</bean>

但这不起作用。看起来 CMS Structure API 仅适用于那些直接分配给该组件而不是父组件的属性。

那么正确的方法是什么?

4

0 回答 0