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


Желаете отблагодарить автора? Есть несколько возможностей! :-)
Яндекс.Деньги:   PayPal:
Прочие варианты:
  • Купить подарочный сертификат Amazon и послать его на e-mail aleksey@trufanov.com
  • Перевод WebMoney WMZ на счёт Z102288667626
  • Перевод Яндекс Деньги на счёт 41001351592123


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

  1. Gaver Says:

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

  2. BlackBird Says:

    // Краснеет Кхм, FAQ я не читал :-\ Спасибо 🙂

  3. BlackBird Says:

    Дополнил пост, спасибо Gaver’у 🙂