Не удается отобразить настраиваемое поле формы в 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.
То, что вы в конечном итоге, - это просто