Можно ли добавить дополнительные поля под Create User в Liferay

Я использую Liferay 6 для разработки портала. Во время создания пользователей под Liferay мне нужно также добавить несколько дополнительных полей?? Пожалуйста, дайте мне знать, если это возможно или нет??

Пожалуйста, смотрите скриншот, приложенный здесь, а также, пожалуйста, дайте мне знать, в какой таблице это будет храниться в базе данных??

5 ответов

Да, вы можете использовать функциональность Custom Attributes для объектов Liferay (в вашем случае, User) и можете добавлять столько дополнительных полей, сколько необходимо для каждого объекта Liferay.

Настраиваемое поле для пользовательского объекта может быть создано через:
Панель управления -> Портал -> Настраиваемые поля -> Пользователь.

И программно может быть создан следующим образом:

user.getExpandoBridge().addAttribute("yourCustomFieldKey");

Затем установите значение как:

user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField");

Если ваше настраиваемое поле уже присутствует, вы можете проверить это так:

if (user.getExpandoBridge().hasAttribute("yourCustomFieldKey")) { ... };

Данные хранятся в таблицах с префиксом "EXPANDO":

  • EXPANDOCOLUMN: хранит ключ настраиваемого поля и другие настройки (содержит ссылки на tableId)
  • EXPANDODATA: хранит значение настраиваемого поля для ключа (содержит ссылки на columnId и tableId)
  • EXPANDOTABLE: хранит, для какого объекта (пользователя) liferay вы добавляете настраиваемое поле
  • EXPANDOROW: хранит информацию о связях между пользователем и его значениями (содержит ссылки на tableId и userId)

Надеюсь это поможет.

Да, вы можете добавить настраиваемые поля к user-entity и добавить их значения полей для user:

user.getExpandoBridge().addAttribute(...);

Поле Custim для пользовательской сущности, которую вы можете создать с помощью панели управления Portal->Custom Fields или программно при запуске liferay.

Данные будут храниться в ExpandoValue столы.

На всякий случай, если кто-то попытается получить значения из настраиваемых полей, и возникнут проблемы с нулевыми значениями, возвращаемыми методом user.getExpandoBridge().getAttribute("yourCustomFieldKey") (даже когда вы следили за темами о разрешениях), я нашел другой способ получить значения пользовательских полей:

ExpandoTable table = ExpandoTableLocalServiceUtil.getDefaultTable(user.getCompanyId(), User.class.getName() );
ExpandoColumn column = ExpandoColumnLocalServiceUtil.getColumn(table.getTableId(), "yourCustomFieldKey");
ExpandoValue expandoValue = ExpandoValueLocalServiceUtil.getValue(table.getTableId(), column.getColumnId(), user.getUserId());

Тогда вы можете сделать простое (если поле текстовое) expandoValue.getString();

Не так красиво, но делай работу.

Используйте следующие команды, если у вас возникли проблемы с разрешением при добавлении или настройке атрибута.

user.getExpandoBridge().addAttribute("yourCustomFieldKey",false);
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField",false);

Страницу создания пользователя в LifeRay можно настроить. Вы можете решить, какие поля будут присутствовать на странице создания пользователя. Подробнее об этом здесь.

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