Smarty: использование значений из .conf в пхп-скрипте

zahhar

двинутый новичок
Smarty: использование значений из .conf в пхп-скрипте

Здравствуйте!

Есть файл main.conf с единственной строчкой:
foo = bar

Далее есть смарти-шаблон main.tpl с двумя строчками:
{config_load file=main.conf}
{$var}

И есть пхп-скрипт, содержащий вызов обработчик:

PHP:
require 'Smarty.class.php';
$smarty = new Smarty;
$var="{#foo#}";
$smarty->assign('var',$var);
$smarty->display('main.tpl');
Сейчас в вывод попадает буквальное значение переменной $var - т.е. {#foo#},а мне нужно, чтобы смарти интерпретировал переданный в пхп-переменной указатель на конфиг и вывел-таки его значение, т.е. bar, понимаете? =)

Напрямую написать в шаблоне {#foo#} нельзя, потому что какую конфиг-переменную использовать выясняется в ходе выполнения скрипта и поручить эту чать логики шаблону нельзя по идеологическим соображениям.

Есть альтернативное решение - загрузить конфиг в пхп (кстати, если это единственный вариант, то есть ли решение лучше, чем ф-цией file() загнать посточно в массив и сделать сплит по знаку =?) и из пхп найти значение в конфиге. Но хотелось бы не подгружать конфиг дважды - сначала в пхп, а затем ещё и в шаблоне.

Заранее всем благодарен!
 

zahhar

двинутый новичок
FreeSpace
Док я тоже читать умею, я не могу применить эту ф-цию в своём случае. Не могли бы вы привести рабочий пример для моего случая?

Demiurg
Пхп-скрипт в моём случае строит ф-цию javascript. Как именно будет выглядеть эта ф-ция, зависит от текущих прав пользователя и языка интерфейса. Интерфейсные тексты и прочие данных хранятся в конфигах. Вынести ф-цию в шаблон нельзя, т.к. это часть логики приложения, она может измениться в процессе его жизни, да и позволять ковыряться в этом верстальщикам шаблонов не хотелось бы. Поэтому конфиги нужно ипользовать в пхп.

Я разобрался, что это делается при помощи $smarty->config_load() и $smarty->get_config_vars(), но получается та же проблема - конфиг подгружается дважды, сначала в пхп, затем в шаблоне. (или я не прав - однажды подгрузив его в пхп, в шаблоне он вторично подгруджен уже не будет - я не смог найти в документации к смарти объяснения работы парсера конфигов). Заставить работать евал() для моего случая у меня тоже не получилось, но я ещё новичок в смарти, поэтому не вкурче чо и как лучше.
 

Mammoth

Guest
Re: Smarty: использование значений из .conf в пхп-скрипте

На самом деле:
---------ШАБЛОН----------------
{config_load file=main.conf}
{#var#}

------------СКРИПТ----------------
require 'Smarty.class.php';
$smarty = new Smarty;
$smarty->assign('var',$var);
$smarty->display('main.tpl');

P.S. Если не понял в чем ошибка, то объясняю: в скрипте определил переменную, присвоив ей значение {#var#}, а в шаблоне ее вызвал.
 
Сверху