Píšeme první aplikaci (obecné)
- formacz
- Člen | 7
Ahoj všem,
chtěl jsem se zeptat, procházím si Píšeme první aplikaci a došel jsem do sekce Model, kde se zahajuje práce se službami Service.
Pokud to napíšu podle návodu, tak Laděňka vyhodí
Service app/Model/articleManager not found.
Zkoušel jsem i procházet fóra, ale nic.
Složka Model leží správně v app:
:app
:->Model
::→ ArticleManager.php
Cache jsem smazal a nic .. :-(
Nějak už netuším co by mohlo být špatně.
Tady je odkaz na laděnku.
Tracy –
Service Not Found
Děkuji moc za radu
MF.
- David Matějka
- Moderator | 6445
ahoj, muzes ukazat ten soubor ArticleManager.php? mas tam spravne namespace?
- chemix
- Nette Core | 1310
Ahoj
namespace ma na obou mistech napsan stejne s malym „a“ (ikdyz bych doporucoval psat velke A) spis si myslim ze problem je v nazvu tridy.
Registrovan a dohledavan je „app/Model/articleManager“ s malym article ale trida je pak definovana s velkym Article.
S timhle by ti mel pomoci plugin NEON a Nette do PhpStormu, ktery umi naseptavat tridy, ktere jsou pouzivany v aplikaci.
- formacz
- Člen | 7
ahoj všem,
díky za rady.
S malým „a“ v názvu namespace to funguje, protože ve stromě mám
„app“
Zajímavý je, že to včera nejelo a dnes po nastartování pc, to valí.
Reaguje to na výměnu „a“, tzn. z velkým A to nejede a laděnka vyhodí
chybu. S malým „a“ to jede.
2chemix: zkoušel jsem a reaguje to. Tzn. máš pravdu.
Nebude a nebo nemůže být někde zakopanej pes v cache prohlížeče??
M.
- GEpic
- Člen | 566
Ahoj, na názvech složek nezáleží, stejně tak i kdyby byl namespace úplně jiný než tvoje stromová struktura složek (je ale samozřejmě dobré to dodržovat kvůli PSR4). Měl bys dodržovat CamelCase notaci, čili vždy začít slova velkým písmenem a ostatní malá. Také nezáleží na cache v prohlížeči, spíš záleží na cache přímo v projektu ve složce temp, která by ale neměla se zapnutou laďenkou dělat problém.
Ještě nám ukaž svůj config.neon
. Mám pocit, že to nemáš
správně zaregistrované.
PS: Neukončuj PHP soubory → ?>
Editoval GEpic (24. 3. 2020 1:28)
- Marek Bartoš
- Nette Blogger | 1280
na názvech složek nezáleží, stejně tak i kdyby byl namespace úplně jiný než tvoje stromová struktura složek (je ale samozřejmě dobré to dodržovat kvůli PSR4).
Robotloaderu na tom nezáleží, třídy najde kdekoli v prohledávaných složkách. V případě composer autoloaderu záleží na tom, zda se používá classmap nebo psr-4. Classmap najde soubory kdekoli, ale musí se aktualizovat při přidání nové třídy, u psr-4 je nutné strukturu dodržovat.
https://www.php-fig.org/psr/psr-4/
https://getcomposer.org/…04-schema.md#…
Zajímavý je, že to včera nejelo a dnes po nastartování pc, to valí.
Zkontroloval bych nastavení opcache, jestliže se změny neprojevují ihned (v případě robotloaderu do druhého requestu)
S malým “a” v názvu namespace to funguje, protože ve stromě mám “app”
Na odpovídající stromové struktuře záleží jen autoloaderům,
v tomhle případě byl imho hlavní problém v tom, že když třídu
pojmenuješ App\Model\ArticleManager
, tak nemůžeš při použití
psát app\Model\articleManager
(na velikosti písmen v názvu
třídy záleží)
Editoval Mabar (24. 3. 2020 10:34)
- formacz
- Člen | 7
GEpic napsal(a):
Ahoj, na názvech složek nezáleží, stejně tak i kdyby byl namespace úplně jiný než tvoje stromová struktura složek (je ale samozřejmě dobré to dodržovat kvůli PSR4). Měl bys dodržovat CamelCase notaci, čili vždy začít slova velkým písmenem a ostatní malá. Také nezáleží na cache v prohlížeči, spíš záleží na cache přímo v projektu ve složce temp, která by ale neměla se zapnutou laďenkou dělat problém.
Ještě nám ukaž svůj
config.neon
. Mám pocit, že to nemáš správně zaregistrované.PS: Neukončuj PHP soubory →
?>
Proč se neukončují php soubory ‚?>‘ ??
No jak jsem psal, CACHE jsem vyprázdnil v projektu, ale to nic nedělalo, pomohlo až odstranění při čištění. Budu to sledovat.
<script>
parameters:
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
session:
expiration: 14 days
debugger: true
services:
router: App\Router\RouterFactory::createRouter
- app\Model\articleManager
</script>
S tímhle to jede :-)
- Šaman
- Člen | 2667
formacz napsal(a):
Proč se neukončují php soubory ‚?>‘ ??
Protože
- je to nepovinné, php kód se ukonči s koncem souboru
- ale pokud ukončíš kód značkou a po ni bude ještě cokoliv (mezera, odřádkování), tak se to může poslat na výstup jako statický kód a to pak zlobit (chyby typu nelze odeslat hlavičku, protože na výstup už bylo něco odeslané).
A vzhledem k tomu, že veškerý php kód Nette aplikace by měl být v třídách, tedy celý soubor jen php kód a nic jiného, je ukončování zbytečné. Šablony tohle sice nesplňují, ale ty jsou generované strojově, tam nehrozí právě že se po ukončení značky zapíše třeba ta mezara, tabulátor nebo odřádkování.
Editoval Šaman (25. 3. 2020 3:22)
- formacz
- Člen | 7
Šaman napsal(a):
formacz napsal(a):
Proč se neukončují php soubory ‚?>‘ ??Protože
- je to nepovinné, php kód se ukonči s koncem souboru
- ale pokud ukončíš kód značkou a po ni bude ještě cokoliv (mezera, odřádkování), tak se to může poslat na výstup jako statický kód a to pak zlobit (chyby typu nelze odeslat hlavičku, protože na výstup už bylo něco odeslané).
A vzhledem k tomu, že veškerý php kód Nette aplikace by měl být v třídách, tedy celý soubor jen php kód a nic jiného, je ukončování zbytečné. Šablony tohle sice nesplňují, ale ty jsou generované strojově, tam nehrozí právě že se po ukončení značky zapíše třeba ta mezara, tabulátor nebo odřádkování.
Díky moc