Jak na přihlášení do systému

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jack.q
Člen | 54
+
-13
-

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í?

Etch
Člen | 403
+
0
-

Zhruba:

$router[] = new Route('<presenter>/<action>[/<id>]',
	array('module' => 'front', 'presenter' => 'Homepage', 'action' => 'default'));

Editoval Etch (13. 1. 2015 16:28)

Jack.q
Člen | 54
+
-6
-

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

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í.

Pavel Kravčík
Člen | 1182
+
+2
-

Nejdřív by to chtělo zdolat základy PHP a pak teprve začínat s Nette.

Chybí Ti:

return $router;
Jack.q
Člen | 54
+
-8
-

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

@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
+
-3
-

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

@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
+
-5
-

matej21 napsal(a):

@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

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

Jack.q napsal(a):

Základy PHP mám

nemáš, jinak by ses neptal na věci na které se ptáš

Etch
Člen | 403
+
+1
-

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

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

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

Oli
Člen | 1215
+
0
-

Existuje soubor C:\xampp\htdocs\ectro.cz\app/FrontModule/presenters/HomepagePresenter.php? Uvedl jsi adresářovou strukturu bez zanoření…

Tomáš Jablonický
Člen | 115
+
0
-

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).

Šaman
Člen | 2635
+
0
-

Pro začátek bych moduly neřešil a administrátorovi udělal jen jeden presenter. Jestli plaveš v takových základech, tak moduly ti to jen zbytečně zesložití.

Filip Procházka
Moderator | 4668
+
+4
-

Já bych řekl, že ten soubor vytvořil, ale nedal tam namespace, protože neví co to je…

Duch.Veliky
Člen | 68
+
0
-

Ještě zkopíruj obsah HomepagePresenter, ne? :)

Jack.q
Člen | 54
+
-9
-

Ne ne, děkuji všem moc ochotným za pomoc, pak už to byla hračka

Michal Vyšinský
Člen | 608
+
+2
-

A že bys pro ostatní, co budou tápat napsal, v čem byl problém?

Jack.q
Člen | 54
+
-9
-

V HomepagePresenter.php a v BasePresenter.php jsem upravil namespace