vytvoření stromu, jehož položky se načítají z adresářové struktury

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zvirus
Člen | 2
+
0
-

Zdravím, začínám s nette a potřeboval bych poradit, jak vytvořit strom ve kterém jsou jednotlivé položky adresáře umístěné na serveru (tj. strom adresářové struktury, který začíná v jednom daném adresáři např. Mapy). Následně si z nich potřebuju vybírat např. checkboxem a vybrané adresáře a jejich obsah pak zabalit do zipu. Budu moc rád za každou radu, už v tom pěkně plavu:(

DocX
Člen | 154
+
0
-

To je docela komplexní úloha. Nejdřív chci ale říct, že Nette nerovná se „najdu si metodu která magicky dělá zrovna to co chci a jen napíšu její název“. Prostě jsou věci, které je potřeba skutečně napsat vlastní rukou a Nette je jen od toho aby se to psalo pěkně.

Nicméně zkusim shrnout jak bych na to šel:

  1. přečíst adresář pomocí std funkcí php, tj. např. scandir:„http://www.php.net/manual/en/function.scandir.php“ (koukni tam, v komentářích dole možná najdeš kód jak projít strukturu do hloubky). Tím vytvořit nějaké pole, kde budu mít ten strom.
  2. nějak pěkně ho prezentovat, nejsem si jist jak by se hodilo renderovat přímo AppForm, ale určitě bych ho použil jako backend a šablonu vyrobil ručně, jednoduše pomoci <ul> apod.
  3. uživatelem odeslané zaškrtnuté položky zabalit do zipu. Na to by se mohly hodit funkce ze zip:„http://cz.php.net/manual/en/function.ziparchive-addfile.php“ rozšíření PHP, myslím, že by mělo být celkem dobře dostupné na hostinzích. Opět na php.net určitě najdeš dostatek informací.
  4. poslat je uživateli. jednoduše readfile vytvořeného zip souboru.
zvirus
Člen | 2
+
0
-

Dík moc za radu:) Zkusím dát něco dohromady a kdyžtak to sem hodím. Magickou verzi nette bych někdy docela uvítal, ale zas by to byla nuda, kdyby člověk všechno jen našel a nemohl nic naprogramovat a vymyslet sám ;)

Ondřej Mirtes
Člen | 1536
+
0
-

Namísto scandir se dá použít objektový RecursiveDirectoryIterator.

Jinak je to dost komplexní úloha a ve spoustě věcí se můžeš vydat špatným směrem, tak sem pak můžeš hodit výsledek a řekneme ti, co udělat líp :)