Service projectsRepository not found

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

Ahoj,
na webu na mě vyskočila laděnka, která hlásí ‚Service XY not found‘. Konkrétně se jedná o tento řádek v ProjectsPresenteru a metodě startup:

$this->projectsRepository = $this->context->projectsRepository;

V konfigu ji mám normálně zaregistrovanou:

projectsRepository: Todo\projectsRepository

A samotný model mám ve stejném namespace:

<?php

namespace Todo;

/**
 * Tabulka project
 */
class ProjectsRepository extends Repository {

Kde bych měl prosím hledat chybu ve svém kodu?

Díky

David Matějka
Moderator | 6445
+
0
-

mas to v neonu pod sekci „services“? zkousel si smazat cache?

xciza
Člen | 194
+
0
-

Ano v neonu v services. Vše co tam mám:

	services:
		authenticator: Authenticator
		routerFactory: RouterFactory
		router: @routerFactory::createRouter

		projectsRepository: Todo\projectsRepository
		detailRepository: Todo\detailRepository

Cache jsem smazat zkoušel – nepomohlo.

HappyFace
Člen | 162
+
0
-

ja by som ti odporucil kuknit si SystemContainer co vsetko sa ti tam nachadza a od toho sa odpychnut mozno mas len niekde preklep .. inak sa mi osobne nepaci ze nedodrziavas camelcase oznacenie triedy by malo vzdy zacinat velkym pismenom ale to len tak na okraj

do neon-u si dopis:

nette:
	container:
		debugger: TRUE

Editoval HappyFace (29. 10. 2013 16:02)

xciza
Člen | 194
+
0
-

HappyFace napsal(a):

do neon-u si dopis:

nette:
	container:
		debugger: TRUE

Přidáno, ale po aktualizaci stránky a vymazání cache žádnou změnu nevidím. Furt stejná laděnka

Šaman
Člen | 2666
+
0
-

V první řadě zkus přepsat názvy tříd v configu na velká písmena: Todo\ ProjectsRepository, pokud to není tím, tak někam opstni laděnku a pokud možno celý projekt. Ideálně na GitHub, tam se to dá jen prolistovat a nemusí si to každý stahovat k sobě.


A propo, to, co ti radí @HappyFace sice nemá řešit tvůj problém, ale má ti to pomoci s odladěním. V debugBaru se ti objevila ikonka ozubeného kolečka a v ní máš vypsaný celý kontejner. Pokud tam třeba správná služba je, tak víš, že chyba je v načítání služby z kontejneru. Pokud tam není, tak se ti ani nevytvořila.

Editoval Šaman (29. 10. 2013 16:19)

xciza
Člen | 194
+
0
-

Předpokládal jsem že se mě něco objevý v debugbaru ale bohužel nic. Projekt jsem nahodil zde: https://github.com/cihakMartin/WEB snad se tam dostanete.

xciza
Člen | 194
+
0
-

Nikdo žádný nápad?

Šaman
Člen | 2666
+
0
-

Máš tam dva configy – jeden v /app a druhý správně v app/config. Problém je, že v bootstrapu načítáš ten z /app, který je prázdný a proto žádné služby nevytvoří. Když ten prázdný v /app smažeš (nemá tam co dělat), tak získáš srozumitelnou chybovou hlášku.
V DebugBaru se ti také nic neobjeví, protože ten ladící panel se zapíná v tom configu, který nenačítáš :)

oprav tedy ten bootstap.php

<?php
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
$container = $configurator->createContainer();
?>

Editoval Šaman (30. 10. 2013 17:08)

xciza
Člen | 194
+
0
-

Díky, na localu už jsem to rozchodil. Ale hodil jsem to na hosting od wedosu a nevím proc ale chce to po mě app/presenters/HomepagePresenter.php navzdory tomu že tam mám moduly a úvodní stránka by měla být z front modulu a ProjectsPresenteru.
Co by mohlo dělat tohle? díky

David Matějka
Moderator | 6445
+
0
-

mas tam dvoji definici rout – jednu v bootstrapu a druhou v RouterFactory (app/router/RouterFactory.php) – presun tu definici z bootstrapu do RouterFactory

xciza
Člen | 194
+
0
-

Díky,
dlouho jsem s nette nedelal a tyto zmeny jsem nejak nezaregistroval. Vše funguje jak má.

xciza
Člen | 194
+
0
-

Ještě se zeptám na routy, ať nemusim zakladat úplně nové téma:
mám url:

http://xy.cz/projects/logos

a chtěl bych tam mít:

http://xy.cz/loga

Jde toho nějak jednoduše dosáhnout?