Routování článku z databáze?

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

Mám uložený nějaký článek v databází. Problém je s obrázky v tomto článku, odkazy na ně jsou relativní, tj. klasicky

<img src="images/photo.jpg">

Absolutní adresování používat nechci, budu je potřebovat přenášet.

Pokud tento článek zobrazím v Homepage:default, není s takto adresovanými obrázky problém, ale kdekoliv jinde ano ( Article:show, … )

Routu napsánu mám a odkazy překládá pěkně, není problém si napsat novou, ale popravdě netuším co na tom mám opravovat ? Jde jenom o to zobrazení obrázků.

(můžu v těch článcích odresy opravit na

<img src="../images/photo.jpg">

, ale to není moc pěkné řešení.)

Nešlo by to nějak čistěji ?

ricco24
Člen | 141
+
0
-

Využi absolútne cesty pomocou nette

<img src="{$basePath}/images/photo.jpg">

Nebudeš mať problémy pri rôznych layoutoch/viewoch ani pri presunoch na hosting.

Editoval ricco24 (11. 4. 2012 19:38)

Saurian
Člen | 28
+
0
-

ricco, to by bylo moc jednoduché :)

  • Článek nevytvářím já, ale zákazník v editoru, který obrázkům odkazy generuje.
  • Celí článek je uložený v databázy.
  • Článek je předán šabloně, kde se jednoduše zobrazuje
{!$article}
duke
Člen | 650
+
0
-

Nejlepší bude prohnat to regulárním výrazem a ten $basePath ke všem relativním <img src="..."> přidat než to předáš šabloně.

Saurian
Člen | 28
+
0
-

Jojo taky řešení, jenom trochu svérázné :) Uvidíme co s tím až se vrátím domů …

Saurian
Člen | 28
+
0
-

Ještě se vrátím k tomu problému, třeba to někomu pomůže.

Problém byl jen v tom, že byla použita routa pro čtení článků ve formátu

$router[] = new Route('clanek/<id>', array(
    'id' => array( ... ),
    'presenter' => 'article',
    'action' => 'show'
));

která způsobí, že při zobrazení článků z databáze mají adresu {$basePath}/clanek/images/…
Pokud se článek zobrazí na hlavní stránce, byla použita základní routa a adresy obrázků vedli správně na {$basePath}/ images/…

Problém byl řešen vlastní routou bez použití toho prefixu „clanek“.