Проверка правильности значений в TCEforms для TCA полей типа "user"
Встала вот такая задача. В разрабатываемом расширении в определенной таблице есть поле описанное в TCA как "type" => "user". Т.е. отрисовывается это поле полностью моей функцией и имеет достаточно сложную логику. Задача состоит в том чтобы в случае неправильно заполнения этого поля, пользователю при отправке формы на сохранение выдавалось стандартное сообщение ("Некоторы поля формы заполнены неправильно..."), поле помечалось стандартной меткой (желтый восклицательный знак), а форма не передавалась на обработку.
Просмотрев класс TCEforms я сначало обрадовался увидев что там есть массив TCEforms::additionalJS_submit[] в который можно помещать javascript код который будет вызываться при нажатии на одну из кнопок, предназначенных для сохранения формы. Окинув быстрым взглядом как вызывается код вставленный в этот массив моим расширением я зашел в некоторый тупик. Ниже приводиться отрывок кода как вызывается код добавленный таким образом: Код:
//код взят из файла jsfunc.tbe_editor.js Стал смотреть дальше на код этой функции. Как видно там идет проверка для полей которые обязательны для заполнения и значение которых должно попадать в определенный диапазон. Все это проверяется через одну функцию и первоначально я подумал что там можно каким либо образом добавить свой тип проверки. Просмотрев код этой функции, а также функции checkElementByType которая непосредственно проверяет правильность заполнения полей, я не обнаружил никакого намека на то что там можно добавить что-то свое. Подытоживая, все выше сказанное пришел только к одному пути решения задачи (если не "хакать" код TBE_EDITOR): регистрировать мое поля как поле обязательно для заполнения (кстати еще не разобрался как), в TCEforms::additionalJS_submit[] вставлять код который проверяет правильность заполнения моего поля и в случае если поле заполнено неверно убирать значение из него, так чтобы поле не проходило проверку по критерию ("обязательно для заполнения"). Но все это как-то выглядит слишком замудренно. Поэтому уважаемые коллеги обращаюсь к Вам за помощью. Возможно уже кто-то из Вас делал что-то подобное или просто разбирался как устроена проверка правильности заполнения полей в форме редактирования записи, и если есть такие люди то пожалуйста пните в правильном направлении. |
Часовой пояс GMT +4, время: 15:26. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot