Problém s routováním, nastavení správné template

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

Dobrý den,

začínám s Nette a na začátek bych uvedl, že je to opravdu skvělý framework.

Nyní k problému.

Routy:

$router[] = new Route('admin/<presenter>/<action>/<id>', array(
    'module'    => 'Admin',
    'presenter' => 'Default',
    'action'    => 'default',
    'id'        => null
));

// FrontModule routes
Route::setStyleProperty('presenter', Route::FILTER_TABLE, array(
        'vyhledavani' => 'Search'
));

        $router[] = new Route('index.php', array(
		'module' => 'Front',
		'presenter' => 'Homepage',
	), Route::ONE_WAY);

	$router[] = new Route('<presenter>/<action>/<id>', array(
                'module' => 'Front',
		'presenter' => 'Homepage',
		'action' => 'default',
		'id' => NULL,
	));

Struktura:

  • app/
    • AdminModule/
      • presenters/
      • templates/
    • FrontModule/
      • presenters/
      • templates/
        • Default/
        • Homepage/
        • @layout.phtml
    • templates/
      • @layout.phtml
    • presenters/

Nevím, jak docílit toho, aby mi když jsem v rootu (resp. www.stranka.cz), aby mi bral templaty z app/FrontModule/templates/, ale místo toho je stále bere z app/templates/

Snad jsem to formuloval dobře.

Děkuji za rady.

Editoval wise (27. 10. 2010 20:21)

Aurielle
Člen | 1281
+
0
-

Do BasePresenteru:

public $oldModuleMode = FALSE;
public $oldLayoutMode = FALSE;

Editoval gmvasek (27. 10. 2010 20:27)

wise
Člen | 161
+
0
-

V app/presenter/BasePresenter.php úprava viz. výše, temp delete,

nicméně stále mi to hází tu stejnou chybu (zapomněl jsem ji výše přidat) a to:

Page not found. Missing template '…/templates/FrontModule/Homepage/default.phtml'.

Editoval wise (27. 10. 2010 20:49)

wise
Člen | 161
+
0
-

Moje chyba, omlouvám se, problém byl v tom, že jsem si BasePresenter vložil do FrontModule a přejmenoval ho na:

abstract class Front_BasePresenter extends Presenter

a danou úpravu udělal v tom starém.

Nicméně zde plyne má další otázka. Je to blbost nebo ne? :) Mít 3 BasePresentery? Ve Front, Admin a klasicky?

Edit: ještě jedna otázečka. Momentálně musím všechny třídy mít s prefixem Front_ pro použití ve FrontModule. To je standardní postup nebo tam mám chybu já?

Děkuji moc.

Editoval wise (27. 10. 2010 21:11)

jansfabik
Člen | 193
+
0
-

wise napsal(a):
Nicméně zde plyne má další otázka. Je to blbost nebo ne? :) Mít 3 BasePresentery? Ve Front, Admin a klasicky?

já to tak taky mám, s tím, že Front a Admin dědí od toho BasePresenteru bez modulu

wise
Člen | 161
+
0
-

A co je lepší? Dědit od BasePresenteru jednoho nebo v každém modulu od toho svého?

Edit: logicky by to mělo být jedno, ale tak ať si objasním i tyto dotazy :)

Editoval wise (27. 10. 2010 21:14)

SyXcz
Člen | 75
+
0
-

mno ono jde spíš o to co v těch BasePresenterech máš, k čemu je používáš… sou weby kde je můžeš mít zbytečně prázdný, nebo třeba i všechny stejný…
ale tak i tak já osobně používam pro každej modul vlastní BasePresenter, člověk má aspoň jistotu že když někde něco změní, tak se to nezmění všude :)

wise
Člen | 161
+
0
-

Ok, udělám to tak :) díky.

Měl bych ještě jeden dotaz. Jedná se o zobrazování obrázků v šablonách.

Dejme tomu v layoutu mám obrázek, cestu k němu „./images/image.png“, takže cesta k obrázku je: www.stranka.cz/…es/image.png

Ve chvíli, kdy jsem na jiném presenteru, je cesta www.stranka.cz/…es/image.png a obrázky už mi to samozřejmě nenajde.

RewriteBase zakomentované.

Návrhy, nápady, připomínky prosím? :)

Aurielle
Člen | 1281
+
0
-

Použij v šablonách proměnné $basePath nebo $baseUri (liší se akorát lomítkem na konci, při $basePath tam lomítko píšeš, při $baseUri ne)

wise
Člen | 161
+
0
-

takže absolutně :) díky.

Mesiah
Člen | 240
+
0
-

Osobně si myslím, že BasePresenter by měl být jen jeden, nastavení něčeho, ať už jen persistentní proměnné $lang by měl mít jeden presenter pro celý web, pokud potřebuji nějakou specifikaci, vytvořím další abstraktní třídu např. AdminPresenter, která obsahuje specifikace, třeba kontrolu, jestli jsem admin…

… v podstatě BasePresenter vnímám jako Object.