Creating custom field type¶
Use the name of your field type instead of {field-type}
.
Field definition¶
Create a file custom/Espo/Custom/Resources/metadata/fields/{field-type}.json
with needed parameters.
{
"view": "custom:views/fields/{field-type}"
}
Use out-of-the-box field types as examples: application/Espo/Resources/metadata/fields
.
View¶
Create a file client/custom/src/views/fields/{field-type}.js
:
define('custom:views/fields/{field-type}', ['views/fields/base'], function (Dep) {
/**
* JSDoc enabling code completion in PhpStorm/Webstorm.
*
* @class
* @name Class
* @extends modules:views/fields/base.Class
* @memberOf modules:custom:views/fields/{field-type}
*/
return Dep.extend(/** @lends modules:custom:views/fields/{field-type}.Class# */{
detailTemplate: 'custom:fields/{field-type}/detail',
listTemplate: 'custom:fields/{field-type}/list',
editTemplate: 'custom:fields/{field-type}/edit',
searchTemplate: 'custom:fields/{field-type}/search',
setup: function () {
},
afterRender: function () {
},
});
});
Create detail, list, edit, search templates (*.tpl extension) in a client/custom/res/templates/fields/{field-type}/
directory.
Use out-of-the-box field types as examples:
client/src/views/fields/
— viewsclient/res/templates/fields/
— templates
Translation¶
The label is used in Entity Manager can be set in custom/Espo/Custom/Resources/i18n/en_US/Admin.json
in the section fieldTypes
.
If you need to add translation to other language, use language code_Country Code instead of en_US
.
Then you need to clear cache at the administration panel.
Backend validator¶
You can define a validator class in a field metadata file in the validatorClassName
parameter. See the barcode field as an example.