Если в Smarty «не работает» register_function()

Столкнулся с такой ситуацией в Smarty-2.6.18:

  1. Регистрирую функцию page_file_count($data, $smarty) с помощью register_function().
  2. Использую её в шаблоне: {page_file_count page_id=$row.id}, функция не возвращает значения.
  3. Вставляю в самом начале функции page_file_count простое return «123»; — всё равно не возвращает!
  4. Вставляю в начало функции die(); — не срабатывает! Значит, функция не вызывается.
  5. Убеждаюсь, что зарегистрировал её правильно: если в register_function() изменить любой из двух параметров — получаем ошибку.
  6. Подозреваю заговор 🙂
  7. Думаю…
  8. Удаляю скомпилированную версию шаблона — заработало!

Как оказалось, Smarty просто использовал скомпилированный шаблон, и все эти разы использовалась первоначальная версия функции page_file_count.

Дополнено: Спасибо за подсказку Gaver’у, в Smarty FAQ нашёл описание этой проблемы, и рекомендацию включить на время разработки опцию $force_compile, чтобы шаблоны перекомпилировались каждый раз.

Если вас интересует получение или продление ВНЖ в Словакии — читайте подробнее об условиях и ценах на сайте parus.sk нашей семейной компании Parus Solutions, которая успешно занимается этим с 2015 года.