Routování a relativní cesty k obrázkům

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

Ahoj,

mám v šablonách obrázky a jejich cesty jsou relativní. Pak mam cesty k obrakum i v presenteru. Všechno fungovalo se SimpleRouterem do doby, než sem se začal zajímat o hezčí cesty. Do templatů jsem začal přidávat {$basePath}. Dále v presenteru mám továrničku na formulář. Tlačítko pro odeslání je děláno jako obrázek.

Dříve (se SimpleRouterem) mi stačilo přidat ho jako

$form->addImage('subm', 'images/inzert/btn_zobrazit.png')
	->onClick[] = array($this, 'obrazit');

a teď to mám dělat takto?

$form->addImage('subm', $this->context->httpRequest->url->basePath.'/images/inzert/btn_zobrazit.png')
	->onClick[] = array($this, 'obrazit');

Není to fuj? Snad existuje lepší působ, než psaní románů…

Zdraví Tom

redhead
Člen | 1313
+
0
-

Proč zakládáš dvě témata s naprosto stejnou otázkou?

Použití $basePath je jak pro obrázky, tak pro další zdroje jako CSS a JS naprosto normální. To, že to děláš v presenteru, je to tvoje blbost.

tomaass
Člen | 74
+
0
-

OK. Dvě témata zakládám z důvodu toho, že na první téma mi nikdo neodpověděl a tak jsem se domníval že je v nerelevantní sekci.

Ano, vím že se to tak v šablonách dělá s basepath

Ano, asi to je „blbost“. Ale spíše než kritiku bych rád věděl, jaký je „best practise“. Byl bys prosí tak hodný a naučil mě, jak to mám udělat?

Díky

Felix
Nette Core | 1247
+
0
-

Ja jsem $form->addImage snad nikdy nepouzil. Pokud chces obrazek (jako tlacitko) tak to udelej pres CSS, pokud chces vlozit HTML do formu, tak to bude musis nejak obejit protoze to defaultne moc dobre nejde, muzes treba zkusit MarkupControl

Editoval Felix (18. 2. 2013 9:34)

tomaass
Člen | 74
+
0
-

Diky. Zkusim to tedy nastylovat.
Mě by uplně stačilo, kdyby například byl nějaký zápis pro do .htaccess pro to, aby to obrázky hledalo od rootu + relativní cesta. Šlo by to?

redhead
Člen | 1313
+
0
-

Spíš než přidávat další Control pro vkládání HTML je lepší renderovat formulář buď ručně nebo si vytvořit vlastní Renderer (a nebo pokud jde jen o styl, tak samozřejmě CSS, jak psal @Felix).

Pracovat s obrázky (natož se statickými) nebo vůbec s něčím, co dokáže CSS nebo šablona (kam práce s GUI patří) není v presenteru dobrý nápad.

EDIT: pokud jen styluješ odesílací tlačítko, použit addSubmit() a uprav si CSS jak je libo. Hlavně proboha k tomu nepoužívej image input. Navíc, CSS ti zaručí znovupoužitelnost u další formulářů, snad tohle nechceš psát u každého formuláře (když nechceš psát ty romány).

Editoval redhead (18. 2. 2013 16:14)

tomaass
Člen | 74
+
0
-

Díky.
Tak jasně. Tam jde o to, že mám aplikaci, která už roky běží a má několik formulářů a každý má jiné odesílací tlačítko (rozuměj jiný obrázek pro tlačítko) a tak nejrychlejší to bylo udělat v presenteru.

Ještě jednu podotázku: Když budu stylovat formulá submit a u každýho formuláře budu chtít jinej obrázek, tak budu asi chtít znát přímo ID toho inputu, že? Neumím zjistit ID submitu, abych ho nastyloval. Neumím zjistit ani ID toho submitu v šabloně, natož do CSS souboru, kde se nedá latte použít. Nejrychlejší, ale zároveň největší dobytčárna, co mě napadne je, podívat se do HTML zdroje s vyrenderovanym formem a podívat se na ID. Ale tak se to asi nedělá, že? Jak to děláte vy?

enumag
Člen | 2118
+
0
-

@tomaass: Nastav mu vlastní ID, na ta vygenerovaná se nespolehej, ten tvar se v další verzi může změnit.

Editoval enumag (18. 2. 2013 21:46)

tomaass
Člen | 74
+
0
-

To je geniální! Děkuju moc. Opravdu jste mi hodně pomohl.