Стандартные поля “список” и “список мультивыбор” прекрасно справляются с небольшим количеством значений в списке, но в моём случае значений очень много, плюс нужно чтобы пользователь мог добавить своё значение, а отображение значений в списке должно зависеть от выбранного значения в другом списке. Я начал искать альтернативные компоненты и нашёл прекрасный компонент, который полностью покрывал мои потребности пока не возникла необходимость внедрения мультиязычности. Как оказалось переделать компонент под мультиязычность и отделаться “малой кровью” не получится, рассмотрев другие варианты пришёл к выводу что в большинстве случаев мне нужен не список значений, а более универсальное поле с автокомплитом. Но ввиду того, что в некоторых случаях пользователю нужно дать возможность выбирать несколько значений как в форме, так и в фильтре простой автокомплит не подошёл. В итоге я пришёл к выводу что мне нужен автокомплит с мультивыбором которое будет подбирать значения по заданным для каждого поля параметрам. Готовых решений я не нашёл.
Время шло, а я искал альтернативу и наткнулся на компонет.
icms2-docs.ru/clientarea/product/14
На видео есть актуальная его версия icms2-docs.ru/clientarea/product/19
Добавлю скриншоты(надеюсь автор не против, а администрация не сочтёт за рекламу):
После ознакомления с компонентом гео и полем автопобором и появилась идея сделать подобное поле автоподбора с мультивыбором и использовать его совместно с другим компонентом управления списками. Далее опишу то, что оно должно из себя представлять.
В настройках поля указывается:
1. Функция — определять текущий интерфейс пользователя и фильтровать значение по значению в столбце:
столбец ( содержит одноименную двухбуквенную языковую кодировку).
Если автоматическое определение языка выключено то вносится значение вруучну — ru, en
Если параметр пустой то отображаются значения на всех языках
Зачем? Я хочу отделить язык интерфейса от языка контента. У пользователя интерфейс сайта может быть на английском, а добавлять контент ему нужно как на русском так и английском.
Это не во всех случаях, поэтому нужна гибкость в настройках.
2. значение для записи в бд
3. значение столбца по которому фильтровать значения.
4. Функция — и/или для фильтрации
5. Функция — с мультивыбором или без в форме
6. Функция — с мультивыбором или без в фильтре
7. Порядок сортировки значений производится по алфавиту.
8. Отображать поле в указанных категория.
9. Вводимая фраза обязательно должна быть началом строки (Да/нет)
При подборе значений будут показаны только те значения, где данная комбинация символов является начальной. Значения, где фраза встречается в средине строки будут пропущены.
10. зависимость поиска от значения, выбранного в другом поле:
-системное имя поля текущего тк.
— название столбца в таблице по которому искать совпадение.
Если такую зависимость сделать невозможно, то не делаем.
Важно! Если параметры фильтрации подборки значения не заданы то выборка происходит без их учёта.
Для пользователя это выгляит как поле список мультивыбор (как на десктопе, планшете, так и смартфоне)
То есть на смартфоне должна остаться функция ввода и поиска значений.
По функции добавления значения пользователем — думаю нужно в некоторых случаях ограничить возможность на уровне групп пользователей. Если у пользователя нет прав на добавление то вместо списка со значениями будет написано — «ничего не найдено». Если всем дать добро на добавление значений то боюсь появится много синонимов.
В моём случае, к примеру должность Second Officer можно написать так :
2nd. Officer
2-nd Officer
2 Off
и тд, поэтому в некоторых случаях нужно запрещать добавлять пользователям значения.
Самый идеальный вариант — это сделать связь синонимов, где главное значение будет подставляться вместо альтернативных, но для этого необходимо делать отдельный компонент управления списками.
Чуть не забыл, и ещё хотел такими функциями наделить поле заголовок (дополнительно).
Из вариантов:
1. Сделать отдельное универсальное поле “Мультивыбор с автокомплитом” которое будет работать совместно с другими таблицами.
2. Делать компонент + поле
В итоге это будет выглядеть скорей как теги нежели как списки.
Так же есть более подробное т.з. Я на связи в л.с. Кто то возьмётся за это или есть альтернативы и готовые решения?