vytvoření stromu, jehož položky se načítají z adresářové struktury
- zvirus
- Člen | 2
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
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:
- 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. - 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. - 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í. - poslat je uživateli. jednoduše
readfile
vytvořeného zip souboru.
- Ondřej Mirtes
- Člen | 1536
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 :)