Задать вопрос

Проблема перехода со Smarty 2 на Smarty 3?

Вопрос довольно простой, не могу перевести работу скрипта на новую версию шаблонизатора.
Раньше у меня был вот такой код
function emailtpl_template($tpl_name, &$tpl_source, Smarty $smarty_obj)
{
	$tpl_source = $smarty_obj->get_template_vars($tpl_name);
	return empty($tpl_source) ? false : true;
}

function emailtpl_timestamp($tpl_name, &$tpl_timestamp, Smarty $smarty_obj)
{
	return true;
}

function emailtpl_secure($tpl_name, Smarty $smarty_obj)
{
	return true;
}

function emailtpl_trusted($tpl_name, Smarty $smarty_obj)
{
}

$smarty = new Smarty();
$smarty->compile_id = md5($subject . $message . (defined("IN_CRON") ? "cron" : ""));
$smarty->register_resource("emailtpl", array("emailtpl_template", "emailtpl_timestamp", "emailtpl_secure", "emailtpl_trusted"));
$smarty->assign("emailsubject", $subject);
$smarty->assign("emailmessage", $message);
$smarty->assign("plaintext", $message_text);

foreach ($email_merge_fields as $mergefield => $mergevalue) {
	$smarty->assign($mergefield, $mergevalue);
}

$subject = $smarty->fetch("emailtpl:emailsubject");
$message = $smarty->fetch("emailtpl:emailmessage");
$message_text = $smarty->fetch("emailtpl:plaintext");


Но в Smarty 3 функцию register_resource изменили на registerResource
я заменил ее в коде своем, но мне скрипт стал выдавать ошибку

Fatal error: Uncaught --> Smarty: Unable to load template emailtpl 'emailsubject' <-- thrown in W:\domains\test\Smarty\sysplugins\smarty_internal_template.php on line 138


А ведь до перехода все работало. подскажите что сделать чтобы запустилось.
  • Вопрос задан
  • 616 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@LeMaX
В версии Smarty 3, метод registerResource больше не принимает массив функций.
Теперь он принимает наследника абстрактного класса Smarty_Resource.

www.smarty.net/docs/en/api.register.resource.tpl
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Maxmadknight
Full-Stack Web Developer
$smarty->registerResource("emailtpl", array("emailtpl_template", "emailtpl_timestamp", "emailtpl_secure", "emailtpl_trusted"));


В 6-й версии WHMCS они поменяли окружение

В следствии чего нужно вторым параметром указать не строковый массив а массив объектов ресурсов, кто то знает какие именно нужно указать ресурсы?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽