Большинство хуков которые работают на валидацию вводимых данных позволяют проверять вводимые данные и при необходимости хук кроме самих данных возвращает еще и ошибку $errors['.....'] для вывода в форму.
Но для чего работает хук при редактирования профиля пользователя user_profile_update.php?
Вот собственно вырезка из кода где хук используется: profile_edit.php
Он либо возвращает true — значит все нормально, либо false, тогда на странице выводит ошибка в заполнении полей. А как указать какое поле именно вызвало ошибку? Где я что пропустил?
p.s. мне нужно сделать дополнительную валидацию полей при редактировании профиля.
з.ы. хаки не предлагать
Каждый хук пишется для своих целей. Вы можете написать свой хук user_profile_update и он параллельно обработает эти же данные, как вам надо и вернёт ошибки какие укажите, но вот только в файле profile_edit.php нужно будет делать хаки, чтобы обработать данные из вашего хука. А вам это уже не интересно.
Событие "user_profile_update" в системе из коробки обрабатывает только один контроллер "auth" в \system\controllers\auth\hooks\user_profile_update.php.
Непонятно, какую именно валидацию Вам нужно сделать, kreator. Но поскольку для вызова хука используется cmsEventsManager::hookAll(), то Вы действительно можете сделать свой обработчик с нужными проверками и он будет вызван до или после хука в user_profile_update.php. Если вызов будет после, то вы можете даже переопределить результат true от предыдущего обработчика на своё значение false. Если Ваш хук сработает первым и вернёт false, то true от следующих хуков Ваш false не изменят. Пока последовательность вызова обработчиков никак не регулируется. Судя по всему обработчики вызываются по алфавитной сортировке имён контроллеров. Но может быть и иначе, например, по расположению записей папок контроллеров в файловой системе.
Также в своём обработчике Вы тем же способом (через cmsUser::addSessionMessage) можете вывести желаемое сообщение пользователю.