@@ -176,8 +176,8 @@ protected function _addAttributesToForm($attributes, \Magento\Framework\Data\For
176
176
[
177
177
'name ' => $ attribute ->getAttributeCode (),
178
178
'label ' => __ ($ attribute ->getStoreLabel ()),
179
- 'class ' => $ attribute -> getFrontendClass ( ),
180
- 'required ' => $ attribute ->isRequired ()
179
+ 'class ' => $ this -> getValidationClasses ( $ attribute ),
180
+ 'required ' => $ attribute ->isRequired (),
181
181
]
182
182
);
183
183
if ($ inputType == 'multiline ' ) {
@@ -227,4 +227,50 @@ public function getFormValues()
227
227
{
228
228
return [];
229
229
}
230
+
231
+ /**
232
+ * Retrieve frontend classes according validation rules
233
+ *
234
+ * @param \Magento\Customer\Api\Data\AttributeMetadataInterface $attribute
235
+ *
236
+ * @return string
237
+ */
238
+ private function getValidationClasses (\Magento \Customer \Api \Data \AttributeMetadataInterface $ attribute ) : string
239
+ {
240
+ $ out = [];
241
+ $ out [] = $ attribute ->getFrontendClass ();
242
+
243
+ $ textLengthValidateClasses = $ this ->getTextLengthValidateClasses ($ attribute );
244
+ if (!empty ($ textLengthValidateClasses )) {
245
+ $ out = array_merge ($ out , $ textLengthValidateClasses );
246
+ }
247
+
248
+ $ out = !empty ($ out ) ? implode (' ' , array_unique (array_filter ($ out ))) : '' ;
249
+ return $ out ;
250
+ }
251
+
252
+ /**
253
+ * Retrieve validation classes by min_text_length and max_text_length rules
254
+ *
255
+ * @param \Magento\Customer\Api\Data\AttributeMetadataInterface $attribute
256
+ *
257
+ * @return array
258
+ */
259
+ private function getTextLengthValidateClasses (\Magento \Customer \Api \Data \AttributeMetadataInterface $ attribute ) : array
260
+ {
261
+ $ classes = [];
262
+
263
+ $ validateRules = $ attribute ->getValidationRules ();
264
+ if (!empty ($ validateRules ['min_text_length ' ])) {
265
+ $ classes [] = 'minimum-length- ' . $ validateRules ['min_text_length ' ];
266
+ }
267
+ if (!empty ($ validateRules ['max_text_length ' ])) {
268
+ $ classes [] = 'maximum-length- ' . $ validateRules ['max_text_length ' ];
269
+ }
270
+ if (!empty ($ classes )) {
271
+ $ classes [] = 'validate-length ' ;
272
+ }
273
+
274
+ return $ classes ;
275
+ }
230
276
}
0 commit comments