Переход со Smarty 2 на Smarty 3

Vergiliy
На сайте с 30.05.2006
Offline
204
1535

Думал перевести сайт со Smarty 2 на Smarty 3 и столкнулся с проблемой.

В Smarty 2 чтобы передать переменную в шаблон я делал так:

$smarty->name = ‘Текст переменной’;

И потом мог ее использовать не только в шаблоне, но и в самом скрипте (сразу после объявления).

Получалось так:

$smarty->name = "Текст переменной";
echo $smarty->name; // Выводилось "Текст переменной"
var_dump($this->view->name); // Выводилось "string(16) "Текст переменной"

А вот в Smarty 3 такое не проходит… :(

Получается так:

$smarty->name = "Текст переменной";
echo $smarty->name; // Ничего не выводится. Скрипт перестает выполняться
var_dump ($smarty->name); // Ничего не выводится. Скрипт перестает выполняться

Как можно записанную в Smarty переменную и тут же использовать в скрипте (прямо в след. строке)?

М
На сайте с 08.02.2006
Offline
59
#1


$smarty->assign('some_var',$some_value);
var_dump($smarty->getVariable('some_var')->value);

Хотя, если честно, не понятно, зачем вам третий смарти если у вас, судя по примеру, нет выделенного VIew. Вы сначала делайте операции над переменной, а потом передавайте в шаблон.

Vergiliy
На сайте с 30.05.2006
Offline
204
#2

В примере я постарался максимально упростить код, в реальности все немного сложнее: Smarty прикручен к Zend Framewok и все с этого вытекающее.

То что лучше передавать переменную в шаблон по завершению любых манипуляций - верная мысль, но мне бы хотелось с минимальными затратами сил перевести уже имеющийся код на Smarty 3. Если такая возможность (манипулировать переменными переданными в Smarty) у третьей версии отсутствует, то тогда понятно - придется переписывать часть кода...

Но я не перестаю наедятся что такая возможность все-таки присутствует?

М
На сайте с 08.02.2006
Offline
59
#3

Если используете ZF, то логичней было бы расширить зендовский View Смартей и переписать кроме всего прочего магические методы __get и __set и использовать


$this->view->name = "Текст переменной";
var_dump($this->view->name);

НО, опять же, манипуляции с переменной возможны будут только через get/set либо непосредственно в шаблоне (ну, и, соответственно, плоды манипуляций будут доступны только в шаблоне). Вообще, это нормально, разработчики ZF и Smarty неявно заставляют вас использовать view по своему прямому назначению.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий