Если в 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, чтобы шаблоны перекомпилировались каждый раз.


Сохранить в Evernote Опубликовать

Комментарии (3) на “Если в Smarty «не работает» register_function()”

  1. Gaver Says:

    Ну так ведь в FAQ тоже самое написано :)

  2. BlackBird Says:

    // Краснеет

    Кхм, FAQ я не читал :-\

    Спасибо :-)

  3. BlackBird Says:

    Дополнил пост, спасибо Gaver’у :-)

Оставьте Ваш комментарий

Вниманию спаммеров: ссылки в комментариях обязательно проверяются автором блога, так что не утруждайте себя лишней работой.

АВТОН: Запчасти для иномарок

Полезное

Достопримечательности
Ветер Перемен
Esly Design