Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to add Extra Fields Under Create User in Liferay

I am using Liferay 6 for portal Development . During Creating Users under Liferay , i need to add some extra Fields also ?? Please let me know if this is ppossible or not ??

Please see the screen shot attached here , and also please let me know in which table this will be stored in Database ??

enter image description here

like image 328
Pawan Avatar asked Apr 13 '12 07:04

Pawan


2 Answers

Yes, you can use Custom Attributes functionality for liferay entities (in your case, User) and can add as many extra fields as necessary for each liferay entity.

Custom field for the user-entity can be created through:
Control Panel -> Portal -> Custom Fields -> User.

And programmatically can be created as follows:

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

Then set the value as:

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

If your custom field is already present you can check like this:

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

The data is stored in tables prefixed with "EXPANDO":

  • EXPANDOCOLUMN: stores the custom field key and other settings (contains the tableId refrences)
  • EXPANDODATA: stores the custom field value for the key (contains the columnId and tableId refrences)
  • EXPANDOTABLE: stores for which liferay entity (user) are you adding the custom field
  • EXPANDOROW: stores linking information between a user and its values (contains tableId and userId refrences)

Hope this helps.

like image 57
Prakash K Avatar answered Oct 16 '22 06:10

Prakash K


yes, you can add custom fields to user-entity and add them the field-values to user:

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

Custim field for the user-entity you can create by Control Panel Portal->Custom Fields or programmaticaly at liferay start.

The data will be stored in ExpandoValue tables.

like image 29
Mark Avatar answered Oct 16 '22 06:10

Mark