Uncaught Nette\DI\ServiceCreationException

ondrejd
Člen | 22
+
0
-

Zdravím všechny, měl bych jednu (pravděpodobně hloupější) otázku:

  1. 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
  2. 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
+
0
-

a změnil jsem i namespacy na admin2?

ondrejd
Člen | 22
+
0
-

Ondřej Kubíček napsal(a):

a změnil jsem i namespacy na admin2?

No to jsem doufal, že dělat nebudu muset a půjde to v té konfiguraci nějak nastavit → jenže nevím jak.

Ondřej Kubíček
Člen | 494
+
+1
-

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
+
0
-

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á struktura

services:
    - 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
+
0
-

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
+
0
-

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 na admin2

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
+
+2
-

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

ondrejd
Člen | 22
+
0
-

Měl jsi pravdu, už to funguje. Díky.