Работа со своими функциями в компоненте Office
Добрый день, у меня к Вам вопрос такой, как можно решить проблему расширения класса auth.class.php компонента Office? Изучая стандартный набор чанков, сниппетов и класса, заметил такую особенность, что в форме чанка передается параметр, например, такой:
<input type="hidden" name="action" value="auth/formLogin" />Потом в классе auth.class.php который лежит в ядре ModX по пути: /core/components/office/controllers/auth.class.php можно увидеть функцию с таким же именем: public function formLogin($data = array()) {...}По аналогии я добавил свои две функции (SaveNewPassword и formRepair)в этот класс, а потом вызывал их в формах следующим образом: <input type="hidden" name="action" value="auth/SaveNewPassword" />и <input type="hidden" name="action" value="auth/formRepair" />соответственно в каждом своем чанке.Вызываю это все дело в чанке вполне стандартно, таким образом:
[[!officeAuth? &groups=`Users` &tplLogin=`tpl.Office.auth.repair` &HybridAuth=`0`]] Но все это дело не работает когда я отправляю форму со своего чанка, где в инпуте пишется что-то вроде этого:
<input type="hidden" name="action" value="auth/SaveNewPassword" />то при отправки субмита это формы выскакивает сообщение «Не могу найти указанное действие». Как решить эту проблему? Подскажите? Может в классе auth.class.php есть какое-то неявное присвоение вызываемой функции по этим параметрам. Кто знает? Комментарии: 6
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Там загружается Office и вызывается его метод loadAction. Он разделяет запрос на 2 строки: класса и метод.
Если запрошенный метод есть в указанном классе — он будет вызван. Если нет, ты получишь ошибку:
Судя по твоему сообщению, ты этого момента даже не доходишь, потому что получаешь «не могу найти указанное действие» от action.php, а он такое выводит, если получает false от loadAction.
Когда loadAction возвращает false? Когда action пустой. А это значит, что твоя форма даже не передала нужный action — вот и ошибка.
Разбирайся с тем, что же ты отправляешь на коннектор. Ну и читай исходники, конечно.
Добавь, пожалуйста, метод formRepair в класс Auth, который что-то вернёт. Желательно, как минимум:
Если такого метода нет, или он ничего не возвращает, или возвращает false — будет такая ошибка, как у тебя.
Нет никаких допустимых корректных action, есть только доступные методы в классе.
Извини, пожалуйста.