Проблема перехода со 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


А ведь до перехода все работало. подскажите что сделать чтобы запустилось.
  • Вопрос задан
  • 597 просмотров
Решения вопроса 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 они поменяли окружение

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

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

Войти через центр авторизации
Похожие вопросы