View previous topic :: View next topic |
Author |
Message |
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Thu Nov 23, 2017 3:07 pm Post subject: Assign varible in tpl function |
|
|
Почему то не меняется переменная внутри функции smarty.
Code: | {$categories = [
['name' => 'cat319'],
['name' => 'cat320',
'children' => [
['name' => 'cat321',
'children' => [
['name' => 'cat322']
]
],
['name' => 'cat325']
]
],
['name' => 'cat323',
'children' => [
['name' => 'cat324']
]
]
]}
{$test = 0}
{function name=categories_menu_left}
{foreach $categories as $c}
{$test = $test+1}
{if $c.children}
{categories_menu_left categories=$c.children}
{/if}
{/foreach}
{/function}
{categories_menu_left categories=$categories}
{$test|var_dump}
|
Результат получается int(0)
scope = parent global не помогает |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Thu Nov 23, 2017 4:35 pm Post subject: |
|
|
А должно меняться?
Учите азы PHP, раздел "область видимости переменных".
Если совсем коротко, то просто напишите плагин или модификатор, делающий нужную вам операцию и возвращающий значение. |
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Thu Nov 23, 2017 6:12 pm Post subject: |
|
|
А что в ваших азах php нельзя объявить переменную глобальной?
Code: | $var = 1;
function test(){
global $var;
$var = 2;
}
test();
var_dump($var); |
Я думаю scope global должно было реализовывать нечто подобное.
Про создание модификатора я прекрасно знаю. Но тут его нет возможности использовать иначе ломается вся модель. Данная функция мне нужна для отображения дерева |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Thu Nov 23, 2017 6:46 pm Post subject: |
|
|
Это на вас курсы Попова давят?
yr4ik wrote: | Данная функция мне нужна для отображения дерева |
Для отображения дерева пишется кастомный рендер, либо используются готовые средства, например HTML_TreeMenu |
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Thu Nov 23, 2017 7:47 pm Post subject: |
|
|
Нет. Ничего не давит. Все ок.
Предложенные вами варианты мне не подходят.
При таком подходе мне куда проще сделать этот подсчет еще при формировании дерева.
Задача поставлена именно через tpl в рекурсии сделать подсчет.
Я написал короткий конкретный пример, где не работает установка переменной даже при scope=global (я бы это назвал багом), а вы предлагаете или азы или костыли... |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Thu Nov 23, 2017 10:08 pm Post subject: |
|
|
Какой отношение подсчёт имеет к шаблону?
Считайте в своём приложении и оставьте шаблону задачи шаблонизатора. |
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Thu Nov 23, 2017 10:47 pm Post subject: |
|
|
прямое.
У меня есть сайт где переключаются щаблоны (демо)
шаблоны все на smarty и сделаны для стандартной версии cms.
И там нужен некий подсчет идентичный примеру для дальнейшего вывода в шаблоне.
Весь код я не стал выкладывать, что бы не запутывать да и смысл не там не меняется меняется. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Fri Nov 24, 2017 12:25 am Post subject: |
|
|
Напишите плагин для подсчёта.
Я свою CMS обложил модификаторами по самое небалуйся. |
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Fri Nov 24, 2017 12:45 am Post subject: |
|
|
да плагин написать не проблема.
Но суть в чем - делать шаблон, затем продавать человеку и писать как установите то сделайте то то то и там там там?
Как по мне не ахти...
Я вообще могу решить это просто. Сделать отдельный tpl и инклудить его рекурсивно с разными параметрами (без функции).
Но как по мне то тут явный баг смарти. Внутри функций не работает параметр scope. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Fri Nov 24, 2017 1:00 am Post subject: |
|
|
В последний раз спрашиваю - что бизнес-логика делает в шаблоне? |
|
Back to top |
|
yr4ik Smarty Rookie
Joined: 06 Oct 2014 Posts: 15
|
Posted: Fri Nov 24, 2017 1:26 am Post subject: |
|
|
Что еще за бизнес логика?
Там логика проста. Есть дерево категорий и в нем идет подсчет дочерних элементов.
что по багу вообще? |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Sat Nov 25, 2017 1:30 am Post subject: |
|
|
Считайте их до шаблона. Не вижу проблем. Бага тоже не вижу. |
|
Back to top |
|
|