vponomarev / ngcms-plugins

10 stars 6 forks source link

[xfields] Изменить условия формирования Идентификатора группы #28

Closed russsiq closed 3 years ago

russsiq commented 3 years ago

https://github.com/vponomarev/ngcms-plugins/blob/2b4ac863926408f4aca90a4d57ca56e858e0c583/xfields/lib/librpc.php#L24

Нельзя ли изменить условия, расширив их до, например, таких:

// PHP
/^[\pL\pM\pN_-]{2,}$/u

// HTML-атрибут `pattern`
[\p{L}\p{M}\p{N}_-]{2,}

То есть Поле может содержать буквенно-цифровые символы, а также тире и подчеркивания и должно быть длиной от двух символов.

В БД это значение не заносится, только пишется в config.php плагина и при использовании UTF-8 опасений не вызывает. При добавлении/редактировании новости JavaScript нормально отрабатывает.

vponomarev commented 3 years ago

Вообще в БД оно может писаться, если выбрать режим "хранение значения в БД" (тогда плагин делает alter table и добавляет поле, в имени которого будет ID поля из xfields).

Проверь, плз, что не возникает проблем с таким форматом.

russsiq commented 3 years ago

То поведение, что ты описал, касается дополнительных полей. Я же говорю о группах дополнительных полей – они сохраняются с использованием функции xf_configSave в файл engine\conf\extras\xfields\config.php

https://github.com/vponomarev/ngcms-plugins/blob/2b4ac863926408f4aca90a4d57ca56e858e0c583/xfields/lib/common.php#L31


Если смущает кирилица, то убрал её и дефисы https://github.com/vponomarev/ngcms-plugins/pull/30.

А так да, всё работает, просто с кирилицей уже не идентификатор получается, а дублирование названия группы полей )


Просто приведу пример, когда это может быть необходимым: есть категория – поплавки и есть категория крючки. У обеих категорий могут быть свои характеристики, которые нам нужно объединить в определенные группы:

Таким образом визуально мы отделяем идентификаторы групп. Пример, против старой схемы:

vponomarev commented 3 years ago

То поведение, что ты описал, касается дополнительных полей. Я же говорю о группах дополнительных полей – они сохраняются с использованием функции xf_configSave в файл engine\conf\extras\xfields\config.php

Ok, тогда вопрос снимаю.