Документация Smarty


Ресурсы

Плагины ресурсов описывают источники данных, из которых берется исходный код шаблона или компоненты PHP-скрипта для Smarty. Вот примеры ресурсов: базы данных, LDAP, разделяемая память (shared memory), сокеты, и прочее.

Необходимо 4 функции для того, чтобы зарегестрировать каждый тип ресурса. Каждая такая функция получает запрашиваемый ресурс в качестве первого параметра и объект Smarty как последний параметр. Остальные параметры зависят от функции.

bool smarty_resource_name_source (string $rsrc_name, string &$source, object &$smarty)

bool smarty_resource_name_timestamp (string $rsrc_name, int &$timestamp, object &$smarty)

bool smarty_resource_name_secure (string $rsrc_name, object &$smarty)

bool smarty_resource_name_trusted (string $rsrc_name, object &$smarty)

Первая функция получает ресурс. Ее первый параметр, это переменная, переданная по ссылке. В нее будет сохранен результат. Функция вернет true если сможет удачно получить ресурс и false в ином случае.

Вторая функция получает время последней модификации запрошенного ресурса (в виде UNIX timestamp). Второй параметр представляет собой переменную, переданную по ссылке, в которой и будет сохранено время. Функция вернет true если timestamp будет определен в правильной форме, и false в ином случае.

Третья функция возвращает true или false в зависимости от того, является ли запрашиваемый ресурс безопасным. Эта функция используется только для ресурсов шаблона, но в любом случае должна быть определена.

Четвертая функция возвращает true или false в зависимости от того, заслуживает ли запрашиваемый ресурс доверия (is trusted) или нет. Эта функция используется только для компонентов PHP-скрипта, запрошенных тэгом include_php или insert с src атрибутом. Тем не менее, она должна объявляться даже для ресурсов шаблона.

Смотрите также: register_resource(), unregister_resource().

Пример 16-10. Плагин ресурса

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Файл:     resource.db.php
 * Тип:     resource
 * Имя:     db
 * Назначение:  Получает шаблон из базы данных
 * -------------------------------------------------------------
 */
 
function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty)
{
    
// выполняем обращение к базе данных для получения шаблона
    // и занесения полученного результата в в $tpl_source
    
$sql = new SQL;
    
$sql->query("select tpl_source
                   from my_table
                  where tpl_name='$tpl_name'"
);
    if (
$sql->num_rows) {
        
$tpl_source $sql->record['tpl_source'];
        return 
true;
    } else {
        return 
false;
    }
}

function 
smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
    
// выполняем обращение к базе данных для присвоения значения $tpl_timestamp.
    
$sql = new SQL;
    
$sql->query("select tpl_timestamp
                   from my_table
                  where tpl_name='$tpl_name'"
);
    if (
$sql->num_rows) {
        
$tpl_timestamp $sql->record['tpl_timestamp'];
        return 
true;
    } else {
        return 
false;
    }
}

function 
smarty_resource_db_secure($tpl_name, &$smarty)
{
    
// предполагаем, что шаблоны безопасны
    
return true;
}

function 
smarty_resource_db_trusted($tpl_name, &$smarty)
{
    
// не используется для шаблонов
}
?>
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…

Linux Optimization

Размещена 30 июля 2012 года

Prelink

читать далее…