Načtení Modelů v presenterech

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

Zdravím,
najdu někde návod jak načítat modely do presenterů? Případně prosím co je potřeba pro zprovoznění dle bodu 2 pro nete 2.1?

  1. https://doc.nette.org/cs/quickstart to neřeší
  2. postup https://pla.nette.org/…cy-injection nefunguje pro poslední nette (stažené pomocí composer create-project nette/sandbox )
  3. ModelLoader je prý fuj.

Předem díky

PS: existuje nějaký seznam častých chyb na kterých jsem včera strávil asi 2 hodiny jako:
parametr url id se zahazuje
nestačí cizí klíč je nutno mít i nazvy sloupců a tabulek dle určitého tvaru.
( v případě kladné odpovědi rozepíšu)

Mysteria
Člen | 797
+
0
-

Pokud zaregistruješ model jako službu v neonu, tak pak je nejjednodušší

/** @var \Model\MujModel @inject */
public $model;

Jinak řešilo se to třeba tady, https://forum.nette.org/…senterom-atd mrkni od 36. příspěvku dále máš nejlepší možný přístup jak to řešit.

Co konkrétně máš na mysli s tím mizením parametru ID z URL?

KEnik
Člen | 10
+
0
-

Díky – zkusím až se na to dostanu.
mizení parametru ( jeho zahození)
http://nette/edit?id=6 > presmeruje na http://nette/edit s parametrem id = NULL
pro id = 6 je potřeba zadat http://nette/edit/6

Šaman
Člen | 2666
+
0
-

Pokud ten parametr nemáš nastavený persistentní, tak se nepředává (podíval by ses jednou na detail uživatele id=10 a pak bys chtěl tu desítku v url nastálo?)

Edit: Teď jsem si to přečetl znovu a nevím, jestli se nesnažíš dělat odkazy <a href="http://nette/edit?id=6"></a>? To by sice imho zahazovat parametr id nemělo, ale je to hodně fuj. Spíš jsem tě špatně pochopil.

Edit2: Asi už chápu – když zadáš ručně adresu http://nette/edit?id=6, tak to zahodí id? To je tím, že máš v routeru nastavený tvar cesty jako 'presenter/view/id'. To id, které se ti objeví v aplikaci a předává se i do action/render metod (pokud vyžadují parametr id) se bere z té cesty. To, které jsi nastavil jako query (id=6) se asi nezahodilo, ale našel bys ho někde v $presenter->request->query.

Editoval Šaman (24. 2. 2014 12:15)

KEnik
Člen | 10
+
0
-

dle návodu https://forum.nette.org/…senterom-atd mi to hází chybu:
Nette\DI\ServiceCreationException
Class JidloModel used in service ‚24_JidloModel‘ has not been found or is not instantiable.

Je vhodnější dořešit tam díky.

Šaman
Člen | 2666
+
0
-

Nemůže to najít třídu JidloModel. Zkontroluj si namespace (v configu to musí být uvedeno s nimi) a případné překlepy jestli ta třída vážně pod tímto názvem existuje (samozřejmě musí být v /app, nebo jinde kam vidí RobotLoader).

KEnik
Člen | 10
+
0
-

Šaman napsal(a):
Edit2: Asi už chápu – když zadáš ručně adresu http://nette/edit?id=6, tak to zahodí id? To je tím, že máš v routeru nastavený tvar cesty jako 'presenter/view/id'. To id, které se ti objeví v aplikaci a předává se i do action/render metod (pokud vyžadují parametr id) se bere z té cesty. To, které jsi nastavil jako query (id=6) se asi nezahodilo, ale našel bys ho někde v $presenter->request->query.

Ano přesně tak, díky za vysvětlení.