Nette\Objects, přesměrování po spuštění

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

Mám pár začátečnických otázek:

  1. Kam v MVP dávat obyčené třídy dědící Nette\Objects ve více modulové aplikaci, které využívají jak admin, tak běžný uživatel? Je to jedno?
  2. Mám AdminModule a FrontModule, jakmile se přihlásím tak to mám nastavené tak, že mě to přesměruje na Front:Homepage:Default. Řekněme, že dále jsme v té aplikaci, přihlásím se do ní a nyní jsem v Admin:Homepage:Default, teď zavřu okno, otevřu ho, ale jsem přesměrován opět do Front modulu, ikdyž jsem přihlášen jako admin.

Potřeboval bych něco jako header apod.
$this->getUser()->isInRole(„admin“)->redirect(„…“);

  1. Je špatné nepoužívat Nette metody pro práci s databází? Resp. použít místo toho jen $database->query(„Ručně psané SQL“), když mám složitější SQL dotaz?
  2. Mám v šabloně vypsaných 10 položek z databáze, každá má nějaké název, text, prim. klíč id a třeba i user_id jako id uživatele-cizí klíč, který tu položku napsal.

Teď chci přidat další sloupec do té pomyslné tabulky s jménem uživatele, který danou položku napsal. Jenže v šabloně se zmůžu jen na $proměnná->id (jenže název uživatele je v jiné tabulce, než jsou položky). Potřeboval bych takový SQL dotaz, který spojí ty dvě tabulky… jenže na to potřebuju id daný položky a to nevim jak vzít a použít v Presenteru, nechápu jak.

Pak další věc co s tím souvisí, opět uvažuju těch 10 položek, teď kliknu třeba na první položku a ta mě přesměruje na jinou stránku, podle ID položky, na kterou jsem klikl. Jenže zase nevim jak vybrat id položky, na kterou jsem klikl. Je to jako bych měl několik fór, každý má různý témata. Kliknu na první fórum, to má id=1, přesměruje mě na stránku, kde jsou vypsané témata fóra, které má id=1. Zase jak mám vzít to id?

Tím jsem asi vyčerpal svojí zásobu otázek, za případné odpovědi mnohokrát děkuji. :-)

Šaman
Člen | 2666
+
+1
-
  1. Běžně se tyto třídy dávají do adresáře app/model, ale je to jedno, robotloader si je najde.
  2. Použij společného předka (BasePresenter) a v něm metodu startup(). If <je admin>, then <přesměruj>.
  3. Není. Nemůžeš pak ale využívat fičur NDb\Table.
  4. Tohle právě řeší ta NDb\Table. Anebo si musíš vytáhnout všechna data, včetně názvu uživatele pomocí toho jednoho SQL.
  5. Trochu nechápu, na co se ptáš. Jestli na tvorbu odkazů, tak ve chvíli, kdy tabulku vytváříš máš k dispozici všechna data, včetně id, ne? Nebo myslíš až po kliknutí na odkaz? To se řeší v action, render, nebo handle metodě, které přidáš parametr, viz dokumentace

Editoval Šaman (5. 10. 2014 15:46)