Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 23 Май, 2012, 10:23:07

Страниц: [1] 2 3
Печать
Автор Тема: Рекурсия в Smarty  (Прочитано 3275 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Baboot    ↓ 
15 Май, 2009, 10:27:08
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27

вот собсна. Вобщем не знаю как красивее и читабельней сделать. Мож кто то реализовывал? Поделитесь опытом. Есть массив вида:
Text

$cList = array("0"=>array(
                                   "id"         =>"1",
                                   "name"    =>"firstEl"
                                   "daughEl" =>array()
                                  )
                    "1"=>array(
                                   "id"         =>"2",
                                   "name"    =>"secEl"
                                   "daughEl" =>array(
                                                            "id"         =>"2",
                                                            "name"    =>"secEl"
                                                            "daughEl" =>array()
                                                            )
                                    )
                      )
// и т.д. макс вложенность до 5 элементов
 
Нужно вывести на экран иерархичепский список... Геммор в том что этот массив "резиновый". То есть он постоянно будет изменятся нужен универсальный(рекурсивный перебор данных) перебор в смарти и выод на экран. У меня только мысли только через include если размер daughEl больше 0.
« Последнее редактирование: 15 Май, 2009, 10:30:08 от Baboot » Записан

2b||!2b
phpdude    ↓ 
15 Май, 2009, 10:29:31 , спустя 2 минуты 23 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66


вот собсна. Вобщем не знаю как красивее и читабельней сделать. Мож кто то реализовывал? Поделитесь опытом. Есть массив вида:
Text

$cList = array("0"=>array(
                                   "id"         =>"1",
                                   "name"    =>"firstEl"
                                   "daughEl" =>array()
                                  )
                    "1"=>array(
                                   "id"         =>"2",
                                   "name"    =>"secEl"
                                   "daughEl" =>array(
                                                            "id"         =>"2",
                                                            "name"    =>"secEl"
                                                            "daughEl" =>array()
                                                            )
                                    )
                      )
// и т.д. макс вложенность до 5 элементов
 

красивее на рекурсии ))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Baboot    ↓ 
15 Май, 2009, 10:32:16 , спустя 2 минуты 45 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27


красивее на рекурсии ))

Да я понимаю) тока как ее самую через смарти реализовать. Не сталкивался с такой проблемой.
Записан

2b||!2b
Baboot    ↓ 
15 Май, 2009, 10:47:57 , спустя 15 минут 41 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27

Что, никто не поможет? Профессионалы называются))))
Записан

2b||!2b
phpdude    ↓ 
15 Май, 2009, 10:51:15 , спустя 3 минуты 18 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66


Что, никто не поможет? Профессионалы называются))))
в бан захотел?)
 
тебе просто надо сделать темплейт который может сам в себя инклудить при определенном условии.
 
епт а самим подумать? начинающие называются))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Baboot    ↓ 
15 Май, 2009, 10:54:30 , спустя 3 минуты 15 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27

в принципе так и делаю. Больше ничего на ум не пришло....
Записан

2b||!2b
phpdude    ↓ 
15 Май, 2009, 10:57:29 , спустя 2 минуты 59 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: 20781
Сила слова: 1.66


в принципе так и делаю. Больше ничего на ум не пришло....
используй xslt, в нем это обычная вещь))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
phpdude    ↓ 
15 Май, 2009, 10:57:37 , спустя 8 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66

ооо! зы: 5000
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Убийца    ↓ 
15 Май, 2009, 10:15:51 , спустя 11 часов 18 минут 14 секунд
НЕ ХУЕТА! ХУЕТА!

адский парень
Группа: Жмурики

Карма: 7
Сообщений: 530
Сила слова: 1.32

Baboot, если ты не эстет в отношении мвц, то рекурсию выполни в пхп, получив нечто вида
 
PHP
array
(
  [0] => array
  (
    "id" => "1",
    "name" => "firstEl"
    "level" => 0
  ),
  ...
);
и потом приассигни это в смарти
Записан
Baboot    ↓ 
17 Май, 2009, 10:55:17 , спустя 2 дня 39 минут 26 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27

мож кому пригодится решил так:
 
Text

<!-- Темплата cList.tpl -->
 
{foreach item='cList' from=$object.daughter}
    {*здесь обработка данных*}
    {if $cList.daughter|@count>0}
        {include file='cList.tpl' object=$cList}
    {/if }    
{/foreach}
 
« Последнее редактирование: 17 Май, 2009, 11:12:45 от Baboot » Записан

2b||!2b
Убийца    ↓ 
18 Май, 2009, 06:15:57 , спустя 19 часов 20 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

адский парень
Группа: Жмурики

Карма: 7
Сообщений: 530
Сила слова: 1.32


мож кому пригодится решил так:
 
Text

<!-- Темплата cList.tpl -->
 
{foreach item='cList' from=$object.daughter}
    {*здесь обработка данных*}
    {if $cList.daughter|@count>0}
        {include file='cList.tpl' object=$cList}
    {/if }    
{/foreach}
 
концепт-пиздец, реализация норм)
Записан
Baboot    ↓ 
18 Май, 2009, 06:18:28 , спустя 2 минуты 31 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 10
Сообщений: 441
Сила слова: 2.27

Убийца, почему пиздец то? Наоборот удобно, не нужно плодить данные. Универсальный рубрикатор. есть ид, если есть родитель то парент=ид записи родителя. Получается иерархический список. Удобно ёпт. Вот тока с сраными рекурсиями бесит возиться при парсинге.
Записан

2b||!2b
phpdude    ↓ 
18 Май, 2009, 06:18:57 , спустя 29 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66

HTML
{if $cList.daughter|@count>0}
        {include file='cList.tpl' object=$cList}
    {/if }

===
 
HTML
{if count($cList.daughter)>0}
        {include file='cList.tpl' object=$cList}
    {/if }
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
phpdude    ↓ 
18 Май, 2009, 06:19:34 , спустя 37 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66


Убийца, почему пиздец то? Наоборот удобно, не нужно плодить данные. Универсальный рубрикатор. есть ид, если есть родитель то парент=ид записи родителя. Получается иерархический список. Удобно ёпт. Вот тока с сраными рекурсиями бесит возиться при парсинге.
почитай про бинарные деревья в бд, думаю тогда ты поймешь что твой концепт - пиздец, причем полный
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
phpdude    ↓ 
18 Май, 2009, 06:19:54 , спустя 20 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66



Убийца, почему пиздец то? Наоборот удобно, не нужно плодить данные. Универсальный рубрикатор. есть ид, если есть родитель то парент=ид записи родителя. Получается иерархический список. Удобно ёпт. Вот тока с сраными рекурсиями бесит возиться при парсинге.
почитай про бинарные деревья в бд, думаю тогда ты поймешь что твой концепт - пиздец, причем полный
с увеличением рубрик, количество запросов к бд растет ой ой ой
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1] 2 3
Печать
 

Перейти в:  

Этот топик скрыли: Sinkler