QuickStart problém při tvorbě HomePage presenteru

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

Dobrý den,
začal jsem se učit nette a to tak, že vytvářím ukázkovou aplikaci QuickStart. Používám Nette Framework 2.0.5 a PHP Version 5.4.7.
Mám problém který se projevuje výstupem z laděnky s názvem Service ‚taskRepository‘ not found.
Celou aplikaci jsem podrobně prošel podle vzoru a všechny názvy jsou napsány správně. Službu taskRepository samozřejmě zavedenou v configu mám. Chyba nastala, když jsem provedl změny na třetí stránce návodu s názvem Presentery a šablony.
Moc prosím o pomoc, už s tím válčím týden.
Je možné že, návod má nějakou chybu a já si toho nevšim?
Děkuji za každou odpověď
FIKI

enumag
Člen | 2118
+
0
-

Smazat cache jsi zkoušel?

FIKI
Člen | 7
+
0
-

Nepomáhá :-)

enumag
Člen | 2118
+
0
-

Tak možná někde nějaký překlep v názvu služby.

FIKI
Člen | 7
+
0
-

vypadá to že nezná žádnou z tří služeb, které aplikacep oužívá v této fázi. Zašel jsem tedy na github a kompletně celý zdroják z configu jsem zkopíroval a nic. Vyzkouším ještě všechny ostatní zdrojáky ale moc tomu nedávám.

Jan Endel
Člen | 1016
+
0
-

ukaz config.neon

FIKI
Člen | 7
+
0
-

Tak jsem si stahl vsechny zdrojaky a nyni se objevuje jina chyba:
No service of type Todo\ListRepository found. Make sure the type hint in Method BasePresenter::injectBase() is written correctly and service of this type is registered.

Editoval FIKI (19. 10. 2012 9:09)

FIKI
Člen | 7
+
0
-

config.neon

#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
common:
parameters:

php:
date.timezone: Europe/Prague

nette:
application:
errorPresenter: Error

database:
dsn: 'mysql:host=localhost;dbname=quickstart'
user: root
password:

session:
expiration: 14 days


services:
authenticator: Authenticator

taskRepository: Todo\TaskRepository
userRepository: Todo\UserRepository
listRepository: Todo\ListRepository


factories:


production < common:

development < common:
Jan Endel
Člen | 1016
+
0
-

Zkopiruj to prosim do znacek oznacujici zdrojovy kod jeste jednou, chybi nam tam podstatné tabulátory.

FIKI
Člen | 7
+
0
-

No vypadá to že jsem měl blbě ty tabulátory a config.neon jsem opravil nicméně mám tady další chyby. Už jsem z toho zoufalý :(
Service ‚nette.listRepository‘: No service of type Nette\Database\Connection found. Make sure the type hint in Method Todo\Repository::__construct() is written correctly and service of this type is registered.
Nenalezeno spojení s databázi? Mám takový pocit, že ten návod je nějaký nepřesný. Všiml jsem si že v návodu quickstart na druhé straně kde se řeší připojeí do Databáze je na konci napsáno:

Nyní je vhodná chvíle upravit si definici Authenticatoru. Definice třídy Authenticator říká, že má dostat jako jediný parametr konstruktoru Nette\Database\Connection (a Nette to pozná a automaticky ho tam předá). To nám ovšem nevyhovuje, raději autentikátoru předáme instanci naší třídy starající se o uživatele: UserRepository.

nicméně už není ukázáno jak toho docílit. Je možné, že mám tady chybu? Proč teda potom když jsem stáhl zdrojáky z gitHubu to nebfunguje to je blbě i tam? Nerzumím tomu.

Editoval FIKI (21. 10. 2012 13:26)

besir
Člen | 170
+
0
-

AHoj, sice nepoužívám NetteDatabese nýbrž Dibi, ale nevidím kde by ses do DB připojoval…? Její konfiguraci ano, ale né registraci service.

něco jako:

    services:
        database:
            class: DibiConnection(%database%)

Nebo pro NetteDatabase

    services:
        database:
            class: Nette\Database\Connection
            arguments: ['%database.driver%:host=%database.host%;dbname=%database.dbname%', %database.user%, %database.password%, ..., Nette\Database\Reflection\DiscoveredReflection()]

Editoval besir (21. 10. 2012 15:00)

vvoody
Člen | 910
+
0
-

besir napsal(a):

Nette Extension zabezpečuje vytvorenie Connection objektu pomocou parametrov z Nette sekcie v configu.

FIKI
Člen | 7
+
0
-

no ale o tom se nikde nepise:-D diky teda vecer zkusim. jeste bych prosil o vysvetleni parametru arguments. jak budou vypadat v mem pripade kdyz jsem na localhostu a databaze je quickstart?:-) diky

vvoody
Člen | 910
+
0
-

Tým som chcel napísať, že to máš v poriadku, tie parametre tam más. Až na to že si to vložil bez tabulátorov, ale u seba ich určite más správne. Keby nie tak ladenka kričala úplne iné errory.

Netuším kde je problém. Než si skúsim ten quickstart spustiť ešte vyskúšaj upraviť config podla úplne posledného príkladu v časti Databáze a model (hneď za textom „Pokud bychom parametry chtěli explicitně uvést, vypadala by definice takto:“) som zvedavý čo na to povie ladenka.

vvoody
Člen | 910
+
0
-

FIKI napsal(a):

…Mám takový pocit, že ten návod je nějaký nepřesný. Všiml jsem si že v návodu quickstart na druhé straně kde se řeší připojeí do Databáze je na konci napsáno:

Nyní je vhodná chvíle upravit si definici Authenticatoru. Definice třídy Authenticator říká, že má dostat jako jediný parametr konstruktoru Nette\Database\Connection (a Nette to pozná a automaticky ho tam předá). To nám ovšem nevyhovuje, raději autentikátoru předáme instanci naší třídy starající se o uživatele: UserRepository.

nicméně už není ukázáno jak toho docílit. Je možné, že mám tady chybu? Proč teda potom když jsem stáhl zdrojáky z gitHubu to nebfunguje to je blbě i tam? Nerzumím tomu.

To s tvojou chybou nesúvisí, ale poznámka to je dobrá. Ten kód so zmenou konštruktora tam evidentne chýba. Možno autor plánoval že ho uvedie v neskoršej časti quickstartu a keď sa tam dostal tak si zase pre zmenu myslel že ten kód už uviedol v tejto časti :D. Authenticator sa neskorej preberá až v tejto časti, kde sú uvedené len jeho metódy. Ja by som navrhol odstrániť tú zmienku o Authenticatore („Nyní je vhodná chvíle upravit si definici Authenticatoru.“) na konci časti Databáze a model, aby to nadarmo nemotalo a až pri Authenticatore sa venovať tej zmene konštruktora (Connection ⇒ UserRepository) + uviesť upravený kód konštruktora.