Class App\Presenters\StrankaPresenter was found, but it cannot be loaded by autoloading
- Dave111
- Člen | 10
Ahoj, potýkám se s tímto errorem a už nevím co s tím.
V mé aplikaci, každý presenter funguje bez problému, ale tento
nový ne.
namespace App\Presenters;
use Nette\Application\UI\Presenter;
final class StrankaPresenter extends BasePresenter
{
private $utils;
function __construct(Utils $utils)
{
$this->utils = $utils;
}
}
- Dave111
- Člen | 10
Šablona existuje, odkazuji na ni takto:
<a n:href="Stranka:stranka">
Struktura souborů
App
-model
–Utils.php
-presenters
–templates
---Stranka
----stranka.latte
–StrankaPresenter.php
Po nějakém šťourání v kódu nastala nová chyba
Cannot load presenter ‚Stranka‘, class ‚App\Presenters\StrankaPresenter‘
was not found.
Přitom tento presenter existuje
Editoval Dave111 (18. 1. 2023 13:53)
- scientific
- Člen | 94
Zapni si Tracy Debbuger, on ti vlastně sám řekne, co Nette chybí, co je špatně. Taky to neumím, jen si vždy nechávám debbugerem radit, co mám delat.
- nightfish
- Člen | 519
@Dave111 Chybovou hlášku vyhazuje SearchExtension v https://github.com/…xtension.php#L92
Příčinou je nefunkčnost autoloaderu – pokud vidím správně, máš
název adresáře s presentery presenters
, zatímco název
namespacu je Presenters
(s velkým počátečním písmenem), což
PSR-4 autoloaderu. Takže přejmenuj adresář na Presenters
(pokud by to nešlo napřímo, tak nejdřív na presenters2
a pak
až na Presenters
), případně smaž cache, případně spusť
composer dump-autoload
a mělo by to začít fungovat.
- m.brecher
- Generous Backer | 873
@Dave111 Sorry, přehlédl jsem chybové hlášení v titulku, nějaký problém je s autoloadingem tříd v aplikaci. Třídy v adresáři vendor načítá autoloading composeru – tedy i Nette, třídy v adresáři /app načítá RobotLoader Nette. Třídy Nette se Ti načítají, třídy aplikace ne, takže možná něco s RobotLoaderem. RobotLoader se aktivuje v Bootstrap.php. Pošli jak máš Bootstrap.php ;)
Editoval m.brecher (18. 1. 2023 14:38)
- Dave111
- Člen | 10
nightfish napsal(a):
@Dave111 Chybovou hlášku vyhazuje SearchExtension v https://github.com/…xtension.php#L92
Příčinou je nefunkčnost autoloaderu – pokud vidím správně, máš název adresáře s presentery
presenters
, zatímco název namespacu jePresenters
(s velkým počátečním písmenem), což PSR-4 autoloaderu. Takže přejmenuj adresář naPresenters
(pokud by to nešlo napřímo, tak nejdřív napresenters2
a pak až naPresenters
), případně smaž cache, případně spusťcomposer dump-autoload
a mělo by to začít fungovat.
Jednoduše jsem přepsal jedno písmeno v namespace a vše je vyřešeno, děkuji za radu. Toto řešení mě napadlo také, ale ani jsem se jej neobtěžoval zkoušet, protože v aplikaci mám i další presentery se stejným namespace jako je v originální otázce, a všechny tyto presentery fungují, tedy s touto chybou. Proč, to je mi záhadou, ale raději do toho zasahovat nebudu :-)