Vypis adresare obrazku z FTP, nebo pomoci DB?

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

Jak resite vypsani adresare? Je na to nejaka funkce primo v Nette?
Taky nevim co je lepsi, budou se pridavat soubory do ruznych kategorii, tak jestli by nebylo lepsi vytvorit v databazi tabulku souboru se sloupci id, nazev, nazev_webalize, cesta, idkategorie atd. a nacitat sloupec cesta do pole.

iguana007
Člen | 970
+
0
-

http://www.php.net/….readdir.php

Ja osobne resim pres DB – mam vsechny soubory v jedne slozce a kategorizuji je do virtualnich adresaru ve stromove strukture definovane v db.

dotTwelve
Člen | 167
+
0
-

iguana007 napsal(a):

http://www.php.net/….readdir.php

Ja osobne resim pres DB – mam vsechny soubory v jedne slozce a kategorizuji je do virtualnich adresaru ve stromove strukture definovane v db.

Tuhle funkci bych pouzil, ale myslel jsem ze Nette ma nejakej FS. Nacpu to do databaze.
Jeste dotaz, v jakej tvaru ukladat cestu? Absolutni, nebo relativni, s lomitkem, bez?

Majkl578
Moderator | 1364
+
0
-

iguana007: Řešení pomocí readdir je s prominutím odporné. Existují i hezčí.

foreach (new DirectoryIterator('/tmp/files') as $file) {
	...
}

Nebo rekurzivní procházení:

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/tmp/files')) as $file) {
	...
}
dotTwelve
Člen | 167
+
0
-

Majkl578 napsal(a):

iguana007: Řešení pomocí readdir je s prominutím odporné. Existují i hezčí.

foreach (new DirectoryIterator('/tmp/files') as $file) {
	...
}

Nebo rekurzivní procházení:

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/tmp/files')) as $file) {
	...
}

Super ;) a dokonce to nevypisuje „.“ a „..“ jako readdir

Majkl578
Moderator | 1364
+
0
-

dotTwelve napsal(a):

Super ;) a dokonce to nevypisuje „.“ a „..“ jako readdir

Správně by mělo (nevím, jak na windowsech). Nicméně jde to opodmínkovat:

//u nerekurzivního procházení:
if ($file->isDot()) continue; //název je . nebo ..

u rekurzivního:
if (in_array($file->getFilename(), array('.', '..'))) continue; //název je . nebo ..

Editoval Majkl578 (25. 3. 2010 14:42)

Panda
Člen | 569
+
0
-

dotTwelve napsal(a):

Tuhle funkci bych pouzil, ale myslel jsem ze Nette ma nejakej FS. Nacpu to do databaze.
Jeste dotaz, v jakej tvaru ukladat cestu? Absolutni, nebo relativni, s lomitkem, bez?

Relativní bez lomítka. Relativní kvůli tomu, aby vše fungovalo i po přesunu jinam a bez lomítka kvůli tomu, aby bylo na první pohled jasné, že cesta je relativní. To lomítko je však již spíše subjektivní a záleží na vkusu.

dotTwelve
Člen | 167
+
0
-

Panda napsal(a):

dotTwelve napsal(a):

Tuhle funkci bych pouzil, ale myslel jsem ze Nette ma nejakej FS. Nacpu to do databaze.
Jeste dotaz, v jakej tvaru ukladat cestu? Absolutni, nebo relativni, s lomitkem, bez?

Relativní bez lomítka. Relativní kvůli tomu, aby vše fungovalo i po přesunu jinam a bez lomítka kvůli tomu, aby bylo na první pohled jasné, že cesta je relativní. To lomítko je však již spíše subjektivní a záleží na vkusu.

No jo, jenze pak kdyz v komponente vypisu cestu tak se mi bez lomitka prida za aktualni URL, a ja potrebuju aby byla v rootu.

viz. $a->href($dokument->cesta)->setText(‚Zobrazit‘);

A dlasi dotaz :D
Jak si zavolam Helper ‚bytes‘ mimo sablonu, konkretne v komponente?

Editoval dotTwelve (25. 3. 2010 15:42)

Panda
Člen | 569
+
0
-

dotTwelve napsal(a):

No jo, jenze pak kdyz v komponente vypisu cestu tak se mi bez lomitka prida za aktualni URL, a ja potrebuju aby byla v rootu.

viz. $a->href($dokument->cesta)->setText(‚Zobrazit‘);

A dlasi dotaz :D
Jak si zavolam Helper ‚bytes‘ mimo sablonu, konkretne v komponente?

$a->href(Environment::getVariable('baseUri') . 'files/' . $dokument->cesta)->setText('Zobrazit');

je problém?

dotTwelve
Člen | 167
+
0
-

Panda napsal(a):

dotTwelve napsal(a):

No jo, jenze pak kdyz v komponente vypisu cestu tak se mi bez lomitka prida za aktualni URL, a ja potrebuju aby byla v rootu.

viz. $a->href($dokument->cesta)->setText(‚Zobrazit‘);

A dlasi dotaz :D
Jak si zavolam Helper ‚bytes‘ mimo sablonu, konkretne v komponente?

$a->href(Environment::getVariable('baseUri') . 'files/' . $dokument->cesta)->setText('Zobrazit');

je problém?

<script>
$soubor = Environment::getVariable('baseUri') . 'dokumenty/' . $dokument->cesta;
$zobrazit->href($dokument)->setText('Zobrazit');
//zobrazeni funguje, cesta je spravne, ale signal nize neprebira celou cestu, ale pouze ve formatu: /dokumenty/atd.

$stahnout->href($this->link('stahuj', $dokument))->setText('Stáhnout');
</script>

Vyreseno zapisem:

<?php
$soubor = 'dokumenty/' . $dokument->cesta;
$zobrazit->href(Environment::getVariable('baseUri') . $soubor)->setText('Zobrazit');
$stahnout->href($this->link('stahuj', $soubor))->setText('Stáhnout');
?>

Tak a jeste dotaz, nacitam velikost z DB v bajtech a potrebuju na to helper |bytes jenze jak ho zavolam v komponente? Kdyz si do sablony predavam uz hotove HTML::elementy?

$velikost = $html->create(‚span‘)->setText($dokument->velikost);

Editoval dotTwelve (25. 3. 2010 16:39)

Ondřej Brejla
Člen | 746
+
0
-

TemplateHelpers::bytes($bytes);?

Panda
Člen | 569
+
0
-

TemplateHelpers::bytes

//Doplnění: Ondra byl rychlejší… :-(

Editoval Panda (25. 3. 2010 16:57)

dotTwelve
Člen | 167
+
0
-

Diky, nakonec jsem vsechno HTML presunul do sablony aby se v tom lepe orientoval koder.

Majkl578
Moderator | 1364
+
0
-

dotTwelve napsal(a):

Diky, nakonec jsem vsechno HTML presunul do sablony aby se v tom lepe orientoval koder.

Což je taky jeden z důvodů, proč se šablony vyplatí používat. :)