Jak na přihlášení do systému
- Jack.q
- Člen | 54
Zdravím, chci si udělat jednoduché přihlášení do administrace, ale vůbec netuším jak oddělit administrátorskou část od té viditelné části pro uživatele. Jak toho docílit? Nestačilo by jen vytvořit v adresáři app adresáře pro AdminModule a FrontModule? Když tohle udělám jak pak nastavit aby FrontModule byl výchozí?
- Jack.q
- Člen | 54
Takže mám takovou to strukturu adresářu
app
AdminModule
config
FrontModule
presenters
router
Ve složce router mám kód který jsem upravil z původního na
class RouterFactory
{
/**
* @return \Nette\Application\IRouter
*/
public static function createRouter()
{
$router[] = new Route('<presenter>/<action>[/<id>]',
array('module' => 'FrontModule', 'presenter' => 'Homepage', 'action' => 'default'));
}
}
I přesto mi to vypisuje chybu
Unable to create service ‚router‘, value returned by factory is not Nette\Application\IRouter type.
- Filip Procházka
- Moderator | 4668
Myslím že by ses měl vrátit k základům PHP. Pokud nevíš jak funguje jazyk ve kterém píšeš, žádný framework tě nezachrání.
- Jack.q
- Člen | 54
kzk_cz napsal(a):
Nejdřív by to chtělo zdolat základy PHP a pak teprve začínat s Nette.
Chybí Ti:
return $router;
Na ten jsem jaksi zapomněl, ovšem ani return $router nepomohl, pořád stejná chyba
Unable to create service ‚router‘, value returned by factory is not Nette\Application\IRouter type
throw new Nette\UnexpectedValueException('Unable to create service \'router\', value returned by factory is not Nette\\Application\\IRouter type.');
Zápis
public static function createRouter()
{
$router[] = new Route('<presenter>/<action>[/<id>]',
array('module' => 'FrontModu', 'presenter' => 'Homepage', 'action' => 'default'));
return $router;
}
Filip Procházka napsal(a):
Myslím že by ses měl vrátit k základům PHP. Pokud nevíš jak funguje jazyk ve kterém píšeš, žádný framework tě nezachrání.
Základy PHP mám
Editoval Jack.q (16. 1. 2015 13:14)
- David Matějka
- Moderator | 6445
@Jack.q a zkusil ses nad tou chybovou hlaskou zamyslet? zkus se podivat, co vracis z createRouter a co by se dle hlasky melo vratit. A porovnej to s routerem v sandboxu, treba neco vymyslis ;)
- Jack.q
- Člen | 54
matej21 napsal(a):
@Jack.q a zkusil ses nad tou chybovou hlaskou zamyslet? zkus se podivat, co vracis z createRouter a co by se dle hlasky melo vratit. A porovnej to s routerem v sandboxu, treba neco vymyslis ;)
Zkusil jsem se nad tou hláškou zamyslet, a proto jsem zkusil jednu úpravu v kódu RouterFactory.php která je v sandboxu, jiný router soubor nemám. Myslel jsem, že stačí jen ten jeden RouterFactory. Celý kód jsem upravil takto:
$router = new RouteList();
$router[] = new Route('<presenter>/<action>[/<id>]',
array('module' => 'FrontModule', 'presenter' => 'Homepage', 'action' => 'default'));
return $router;
Jenže teď to zase píše:
Cannot load presenter ‚FrontModule:Homepage‘, class ‚App\FrontModuleModule\Presenters\HomepagePresenter‘ was not found in ‚C:\xampp\htdocs\ectro.cz\app/FrontModuleModule/presenters/HomepagePresenter.php‘.
- David Matějka
- Moderator | 6445
@Jack.q vidis, staci se zamyslet :)
ted se zamysli nad tou dalsi hlaskou (konkretne proc je tam
FrontModuleModule
) a porovnej tvuj zapis v route se zapisem
od @Etch
- Jack.q
- Člen | 54
matej21 napsal(a):
@Jack.q vidis, staci se zamyslet :)
ted se zamysli nad tou dalsi hlaskou (konkretne proc je tamFrontModuleModule
) a porovnej tvuj zapis v route se zapisem od @Etch
No takže jsem ze zápisu
array('module' => 'FrontModule'
Udělal tohle
array('module' => 'Front'
Ovšem ani tohle nepomohlo. Kde jinde může být problém?
- Filip Procházka
- Moderator | 4668
Jack.q napsal(a):
Základy PHP mám
nemáš, jinak by ses neptal na věci na které se ptáš
- Etch
- Člen | 403
Dále by to chtělo se naučit pokládat otázky „správným“ způsobem.
Udělal tohle
array(‚module‘ ⇒ ‚Front‘
Ovšem ani tohle nepomohlo. Kde jinde může být problém?
Je popravdě otázka na pendrek. Je nutno si uvědomit, že 99,99% programátorů neovládá dovednost čtení z křišťálové koule a proto je pravděpodobnost, že ti na takovouto otázku někdo odpoví relativně minimální.
Pokud se tedy na něco ptáš, tak je vždy celkem vhodné připojit i chybovou hlášku.
- Tomáš Jablonický
- Člen | 115
No myslíš, že ti to snad napíšeme nebo co? Koukej se vzdělat v PHP a pak se teprve mrkni na Nette Framework.
- Jack.q
- Člen | 54
Etch napsal(a):
Dále by to chtělo se naučit pokládat otázky „správným“ způsobem.
Udělal tohle
array(‚module‘ ⇒ ‚Front‘
Ovšem ani tohle nepomohlo. Kde jinde může být problém?Je popravdě otázka na pendrek. Je nutno si uvědomit, že 99,99% programátorů neovládá dovednost čtení z křišťálové koule a proto je pravděpodobnost, že ti na takovouto otázku někdo odpoví relativně minimální.
Pokud se tedy na něco ptáš, tak je vždy celkem vhodné připojit i chybovou hlášku.
No chybová hláška je stále stejná:
Cannot load presenter ‚Front:Homepage‘, class ‚App\FrontModule\Presenters\HomepagePresenter‘ was not found in ‚C:\xampp\htdocs\ectro.cz\app/FrontModule/presenters/HomepagePresenter.php‘.
V souboru RouterFactory.php je následovný kód:
class RouterFactory
{
/**
* @return \Nette\Application\IRouter
*/
public static function createRouter()
{
$router = new RouteList();
$router[] = new Route('<presenter>/<action>[/<id>]',
array('module' => 'Front', 'presenter' => 'Homepage', 'action' => 'default'));
return $router;
}
}
Struktura adresářů a souborů je taková:
app
AdminModule
Zatím prázdná
config
config.local.neon
config.neon
FrontModule
model
presenters
templates
router
.htaccess
bootstrap.php
web.config
- Tomáš Jablonický
- Člen | 115
Cannot load presenter ‚Front:Homepage‘, class ‚App\FrontModule\Presenters\HomepagePresenter‘ was not found in ‚C:\xampp\htdocs\ectro.cz\app/FrontModule/presenters/HomepagePresenter.php‘.
A co HomepagePresenter.php … existuje vůbec? … podle všeho ne. A až si ho napíšeš – nezapomeň si ho dát do správného namespace FrontModule (to jen aby jsi nespal, že sis ho založil a nic).
- Filip Procházka
- Moderator | 4668
Já bych řekl, že ten soubor vytvořil, ale nedal tam namespace, protože neví co to je…