![Smarty Forum Index Smarty Forum Index](templates/smarty/images/phpbb2_logo.gif) |
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Tue Sep 18, 2018 7:23 pm Post subject: how work scope for varibles |
|
|
Может кто то объяснить как вообще работает параметр scope внутри шаблона?
сейчас я обновил smarty c 3.1.16 до 3.1.33 и получил проблемы. Вот примерно как настроена работа:
Был полностью рабочий пример на 3.1.16:
php:
Code: | $smarty->assign('title', 'site name');
$content = $smarty->fetch('content.tpl');
$smarty->assign('content ', $content);
$smarty->display('index.tpl'); |
content.tpl:
Code: | {$title = 'new title' scope=parent}
{include file="subcontent.tpl"} |
subcontent.tpl:
Code: | {$title = "{$title} - sub' scope=parent} |
в итоге я получал в index.tpl:
после обновления smarty до 3.1.33 я получил:
подумал что возможно поправили параметр parent и правильней было бы тут использовать global. Заменил, но в итоге:
и тут я уже окончательно запутался в логике этого параметра... |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Wed Sep 19, 2018 11:31 am Post subject: |
|
|
Не нужно было использовать scope вообще.
Как и такой многоступенчатый рендеринг.
Почему не инклюдить файл прямо в шаблоне?
Но если вам так хочется…
content.tpl
Code: | {include file="subcontent.tpl" title='new title'} |
subcontent.tpl
Code: | {$title="{$title} - sub"} |
|
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Thu Sep 20, 2018 7:03 pm Post subject: |
|
|
тут cms работает и в нее такая структура.
Я лишь написал пример и хотел бы услышать разъяснения как сейчас работает scope global parent root |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Fri Sep 21, 2018 8:25 am Post subject: |
|
|
Как и должны работать.
За двумя маленькими исключениями:
1. область видимости объекта Smarty - global, а не parent;
2. даже явно указав global, вы больше не можете переопределить переменные, назначенные шаблону, вне шаблона.
Извините, но программирование на артефактах - вещь ненадёжная.
Ваша CMS должна была сразу использовать extend/block, а не лепить такие горбы. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|