Если в Smarty «не работает» register_function()
Столкнулся с такой ситуацией в Smarty-2.6.18:
- Регистрирую функцию page_file_count($data, $smarty) с помощью register_function().
- Использую её в шаблоне: {page_file_count page_id=$row.id}, функция не возвращает значения.
- Вставляю в самом начале функции page_file_count простое return «123″; — всё равно не возвращает!
- Вставляю в начало функции die(); — не срабатывает! Значит, функция не вызывается.
- Убеждаюсь, что зарегистрировал её правильно: если в register_function() изменить любой из двух параметров — получаем ошибку.
- Подозреваю заговор
- Думаю…
- Удаляю скомпилированную версию шаблона — заработало!
Как оказалось, Smarty просто использовал скомпилированный шаблон, и все эти разы использовалась первоначальная версия функции page_file_count.
Дополнено: Спасибо за подсказку Gaver’у, в Smarty FAQ нашёл описание этой проблемы, и рекомендацию включить на время разработки опцию $force_compile, чтобы шаблоны перекомпилировались каждый раз.




Февраль 13th, 2008 в 02:52
Ну так ведь в FAQ тоже самое написано
Февраль 13th, 2008 в 09:22
// Краснеет
Кхм, FAQ я не читал :-\
Спасибо
Февраль 13th, 2008 в 09:53
Дополнил пост, спасибо Gaver’у