Uncaught Nette\DI\ServiceCreationException
- ondrejd
- Člen | 22
Zdravím všechny, měl bych jednu (pravděpodobně hloupější) otázku:
- zdědil jsem aplikaci, která byla původně psaná v Zend Frameworku, ovšem pak byla napsána nová administrace a ta je v Nette 2.4, a já Nette vůbec neznám
- z vícero důvodů došlo k přesunu do složky admin2, kde mám bootstrap.php a původní odpovídající strukturu (presentery, modely atp.)
Aktuální stav konfiguračního souboru:
parameters:
domain: '*'
database:
driver: 'mysql'
host: 'localhost'
user: '*'
password: '*'
dbname: '*'
charset: 'UTF8'
collation: 'utf8_czech_ci'
options:
lazy: yes
database:
dsn: '%database.driver%:host=%database.host%;dbname=%database.dbname%'
user: '%database.user%'
password: '%database.password%'
options:
lazy: %database.options.lazy%
php:
date.timezone: Europe/Prague
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
session:
expiration: 1 days
savePath: '%tempDir%/sessions'
autoStart: TRUE
services:
- admin2\model\UserManager
- admin2\router\RouterFactory
router: App\RouterFactory::createRouter
gettextTranslator:
language: cs_CZ # default language
files:
front: %appDir%/lang
# optional with defaults
layout: horizontal # or: vertical
height: 450
extensions:
gettextTranslator: GettextTranslator\DI\Extension
Krom té změny v přesunu složky nedošlo ke změnám v jiných zdrojácích a já pořád dostávám tuto chybu:
Fatal error: Uncaught Nette\DI\ServiceCreationException: Class admin2\model\UserManager used in service '26_admin2_model_UserManager' not found. in /var/www/inpage/vendor/nette/di/src/DI/ContainerBuilder.php on line 550
Vím, že tam mám nějakou hloupost, ale jak se v Nette nevyznám, tak nevím jak to nastavit. Neporadil by mi někdo? Díky.
- Ondřej Kubíček
- Člen | 494
v tom případě to nesmíš měnit v tom configu
to co tam je napsané je klasický php namespace, ne adresářová struktura
services:
- admin\model\UserManager
- admin\router\RouterFactory
- ondrejd
- Člen | 22
Ondřej Kubíček napsal(a):
v tom případě to nesmíš měnit v tom configu
to co tam je napsané je klasický php namespace, ne adresářová strukturaservices: - admin\model\UserManager - admin\router\RouterFactory
No, vždyť to tam mám:
services:
- admin2\model\UserManager
- admin2\router\RouterFactory
router: App\RouterFactory::createRouter
To admin2\model\UserManager
i
admin2\model\RouterFactory
jsou cesty správné.
- Ondřej Kubíček
- Člen | 494
přečti si ještě jednou co jsem napsal a podívej se na můj přiklad :)
tím že měníš root složku nemusíš nic měnit v configu
předpokládám že v puvodním adresáři admin, máš namespace třeba toho
UserManager tento – admin\model\UserManager
a to necháš
stejný, tys to přepsal na admin2
Editoval Ondřej Kubíček (14. 12. 2018 10:04)
- ondrejd
- Člen | 22
Ondřej Kubíček napsal(a):
přečti si ještě jednou co jsem napsal a podívej se na můj přiklad :)
tím že měníš root složku nemusíš nic měnit v configu
předpokládám že v puvodním adresáři admin, máš namespace třeba toho UserManager tento –admin\model\UserManager
a to necháš stejné, tys to přepsal naadmin2
já jsem vzal původní aplikaci, hodil to do adresáře admin2
a namespace jsem neměnil (stále je App
), aktualizoval jsem si
composer aby v classmap byl adresář admin2 přiřazen předtím než je
načten bootstrap.php
. Pokud dám do konfigurace jen to
s namespacema, tak mi to hlásí, že je nenajde. Když jsem tam měl ty cesty,
tak to pak házelo tu chybu zmíněnou v názvu diskuse. Nemohl by jsi mi,
prosím, naznačit konfiguraci pro toto, co jsem tady napsal? Díky.
- Ondřej Kubíček
- Člen | 494
zkopíruj sem začátek té třídy UserManager, chci se podívat co tam
máš za namespace, protože v configu nebo v té třídě je blbě a pokud
ne, pokud ten namespace máš fakt admin2\model\UserManager
, tak ti
tu třídu nenačetl autoload, ale pochybuju, že máš namespace začínající
admin2, když jsi psal ted něco o App