Не удается отобразить настраиваемое поле формы в Liferay 7.2

Я мигрировал портал 7.1 DXP на 7.2 DXP, но не могу заставить работать свое настраиваемое поле формы. Я использовалdynamic-data-mapping-form-field-typeмодуль в качестве чертежа. Мое новое поле доступно внутри конструктора форм, но при его использовании ничего не отображается. У меня нет ошибок при сборке, развертывании или в консоли JS. К сожалению, для 7.2 пока нет примера лезвия, поэтому я не мог начать с простого примера. У меня вопрос: как подключить поле Soy template для рендеринга?

2 ответа

Решение

Он реализуется в https://issues.liferay.com/browse/LPS-98417, и это правда, что примера лезвия нет.

А пока вы можете скачать следующий пример кода:

На случай, если кто-то здесь для 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. поскольку у нас нет шаблона сои для генерации JS.

То, что вы в конечном итоге, - это просто файл.

Другие вопросы по тегам