Fatal Error при одновременном использовании хелперов loginForm и signupForm Принято

4

Исходное сообщение тут https://support.webasyst.ru/fo...

Если в шаблоне одновременно вызвать один за другим хелперы $wa->loginForm(), а после $wa->signupForm, то при открытии страницы система упадёт с фатальной ошибкой.

Это происходит из-за кэширования Smarty шаблонов с одинаковым названием (хотя и находящихся в разных директориях).

Оба шаблона form.html инклюдят inline файл confirmation_block.inc.html. При этом:

  • у loginForm есть статический метод класса inputName
  • у signupForm такого метода нет, но есть кастомная smarty-функция, определённая в коде шаблона confirmation_block.inc.html

Поскольку при вызове хелпера loginForm confirmation_block.inc.html уже отренедерился один раз, то при вызове signupForm этот блок выбирается из кэша и пытается выполнить `{$renderer->getInputName('confirmation_code')}` из шаблона от loginForm, что приводит к фатальной ошибке.

Минимальный фикс:

  • переименовать wa-system/signup/templates/confirmation_block.inc.html в wa-system/signup/templates/wa_signup_confirmation_block.inc.html
  • в wa-system/signup/templates/form.html изменить соответствующий {include file="..."}

Хотя я бы, честно говоря, всем шаблонам добавил бы какие-то префиксы типа wa_signup_... , wa_frontend_login_... и т.п.

0 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите