Ahoj, snažím se rozchodit migrace a ty zase potřebují Kdyby/Console. Dokud jsem měl funkční databázi, tak všechno fungovalo, ale teď zkouším spustit konzoli i když v databázi nemám žádná data. A při zadání $ php www/index.php mi to vyhodí hlášku, že neexistuje tabulka role, ke které se zkouší připojit Authorizator. Index.php i bootstrap mám standardní, tam se o žádnou autorizaci nepokouším. Tušíte někdo, v čem by mohla být chyba? Resp. kdy přesně se rozhodne, jestli má naběhnout konzole, nebo běžné spuštění aplikace? Díky.

Kdyby\Console se nahackuje do routeru (za předpokladu, že zaregistruješ ConsoleExtension) a předřadí mu vlastní, který všechny požadavky z CLI směřuje na Kdyby:Cli presenter, tam se pak spustí console application. Pozor na to, že CLI defaultně běží v produkčním režimu, takže není od věci nejdřív smazat cache. Jinak mě na takhle obecně položenou otázku nic lepšího nenapadá…

Aha, díky za odpověď. Myslel jsem, že se mi nějak spouštěly aplikačni presentery, ale nakonec byla chyba jinde. Můj autorizátor si už v konstruktoru z databáze načítá seznam rolí, takže se to asi zaseklo už během sestavování kontejneru.

Záhadou mi zůstává, proč funguje samostatný skript migrací, který si také nechá bootstrapem sestavit kontejner a bere si pak z něho připojení k databázi. Napadá mě jen, jestli kontejner není lazy a nevytváři konkrétní instance až na vyžádání – ten scipt migrací chce opravdu jen instanci connection, zatímco konzole vytváři presenter, ten chce uživatele a ten zase autorizátor.


Dodatek: Ano, ta chyba má opravdu v řetězci PresenterFactory a spadne to při vytváření presenteru. Pokud tedy není možné vytvořit (třeba bez databáze) ani obecný Nette\Application\UI\Presenter, tak konzole nenaběhne.


You must first log in to participate in this discussion