1

我正在将 7.1 DXP 门户迁移到 7.2 DXP,但我无法使用我的自定义表单域。我将该dynamic-data-mapping-form-field-type模块用作蓝图。我的新字段在表单构建器中可用 - 但是在使用它时,什么都不会呈现。我在构建、部署或 JS 控制台中没有错误。不幸的是,7.2 还没有刀片示例,所以我无法从一个简单的示例开始。我的问题是:如何挂钩字段 Soy 模板进行渲染?

4

2 回答 2

3

它正在https://issues.liferay.com/browse/LPS-98417中实施,确实没有刀片示例。

同时您可以下载以下示例代码:

于 2020-03-17T11:10:25.590 回答
0

万一有人在这里使用 Liferay 7.3。Liferay 7.3 从大豆模板转移到纯反应组件。您可以再次使用 Liferay 的模块作为蓝图。

import { FieldBase } from 'dynamic-data-mapping-form-fieldtype/FieldBase/ReactFieldBase.es'

import React, { useState, useEffect, useRef } from 'react';

const Text = ({ readOnly,
    id,
    name,
    onBlur,
    onChange,
    onFocus,
    placeholder,
    value: initialValue }) => {

    const [value, setValue] = useState(initialValue);

    return (
        <>
            <input type="text" />
        </>
    );
};

const Main = (props) => {
    return (
        <FieldBase  {...props}>
            <Text {...props} />
        </FieldBase>
    );
}

export default Main;

在这种情况下,我们正在导入 FieldBase 组件,它是 Liferay 字段包装器,它将负责添加任何默认的 Liferay 行为(验证、名称、占位符、工具提示等......)。当我们使用大豆模板时,我们也做了同样的事情。

您可以从表单域刀片模板创建模块。然后删除 soy 模板文件以及package.json "build-soy": "metalsoy --externalMsgFormat \"Liferay.Language.get(‘\\$2’)\" --soyDeps \"./node_modules/clay-*/src/**/*.soy\" \"./node_modules/com.liferay.dynamic.data.mapping.form.field.type/META-INF/resources/+(FieldBase|components)/**/*.soy\"" 中的以下行, 因为我们没有任何 soy 模板可以从中生成 JS。

你最终会得到的只是一个es.js文件。

编辑: 如果您使用刀片生成模板,则可以使用此选项生成基于反应的组件: --js-framework react

于 2021-10-12T16:44:58.603 回答