Invalid link: Cannot load presenter ‚Front:Admin‘

kiCkZ
Člen | 153
+
0
-

Zdravim,

mam problém s rozdělením do modulů, nevíte jak nastavit link v defaul.latte ve FrontModulu na Admin ?
Vyskakuje mi stále tato hláška: Invalid link: Cannot load presenter ‚Front:Admin‘, class ‚FrontModule\Presenters\AdminPresenter‘ was not found

Struktura souborů:

App
AdminModule
presenters
templates
 model

FrontModule
presenters
templates
model

RouterFactory.php

namespace App;

use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;


class RouterFactory
{
	use Nette\StaticClass;

	/**
	 * @return Nette\Application\IRouter
	 */
	public static function createRouter()
	{
		$router = new RouteList;

                $router[] = $adminRouter = new RouteList('Admin');
                $adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]','Homepage:default');

                $router[] = $frontRouter = new RouteList('Front');
                $frontRouter[] = new Route('<presenter>/<action>[/<id>]','Homepage:default');

		return $router;
	}

}
{block content}
<a n:href="Admin:Homepage">Administrace</a>
{/block}

HomepagePresenter.php

namespace FrontModule\Presenters;

use Nette;
use FrontModule\Model;


class HomepagePresenter extends BasePresenter
{

	public function renderDefault()
	{
		$this->template->anyVariable = 'any value';
	}

}

Editoval kiCkZ (15. 8. 2017 16:15)

David Matějka
Moderator | 6445
+
0
-

kdyz chces odkazovat absolutne na jiny modul, musis pred destination pridat dvojtecku. navic ti tam chybi akce, ma to tedy vypadat takhle:

<a n:href=":Admin:Homepage:default">Administrace</a>

respektive za dvojteckou nemusi byt "default", ktere je implicitni:
<a n:href=":Admin:Homepage:">Administrace</a>
kiCkZ
Člen | 153
+
0
-

David Matějka napsal(a):

kdyz chces odkazovat absolutne na jiny modul, musis pred destination pridat dvojtecku. navic ti tam chybi akce, ma to tedy vypadat takhle:

<a n:href=":Admin:Homepage:default">Administrace</a>

respektive za dvojteckou nemusi byt "default", ktere je implicitni:
<a n:href=":Admin:Homepage:">Administrace</a>

To jsem udělal a mam tu další hlášku:

Invalid link: Cannot load presenter ‚Admin:Homepage‘, class ‚AdminModule\Presenters\HomepagePresenter‘ was not found.

Přitom Homepage presenter mam přímo v AdminModule → presenters → zde

Editoval kiCkZ (16. 8. 2017 7:35)

Zdeno1981
Člen | 114
+
0
-

Zkontroluj si jestli máš správně namespace.

Editoval Zdeno1981 (16. 8. 2017 7:48)

kiCkZ
Člen | 153
+
0
-

Zdeno1981 napsal(a):

Pokud jde o HomepagePresenter který si uvedl v předchozím příspěvku, tak máš špatný namespace.

Ten je pouze ve FrontModule

Jinak tam mam samozřejmě:

namespace AdminModule\Presenters;

use Nette;


class AdminPresenter extends BasePresenter
{

	public function renderDefault()
	{
		$this->template->admin;
	}

}
Zdeno1981
Člen | 114
+
0
-

kiCkZ napsal(a):

David Matějka napsal(a):

kdyz chces odkazovat absolutne na jiny modul, musis pred destination pridat dvojtecku. navic ti tam chybi akce, ma to tedy vypadat takhle:

<a n:href=":Admin:Homepage:default">Administrace</a>

respektive za dvojteckou nemusi byt "default", ktere je implicitni:
<a n:href=":Admin:Homepage:">Administrace</a>

To jsem udělal a mam tu další hlášku:

Invalid link: Cannot load presenter ‚Admin:Homepage‘, class ‚AdminModule\Presenters\HomepagePresenter‘ was not found.

Přitom Homepage presenter mam přímo v AdminModule → presenters → zde

Psal jsi ale, že ho máš přímo v AdminModule a teď, že ho máš jen ve FrontModule.
Pak tedy nechápu, proč se snažíš volat na presenter Homepage v modulu Admin.

Editoval Zdeno1981 (16. 8. 2017 8:09)

kiCkZ
Člen | 153
+
0
-

Zdeno1981 napsal(a):

kiCkZ napsal(a):

David Matějka napsal(a):

kdyz chces odkazovat absolutne na jiny modul, musis pred destination pridat dvojtecku. navic ti tam chybi akce, ma to tedy vypadat takhle:

<a n:href=":Admin:Homepage:default">Administrace</a>

respektive za dvojteckou nemusi byt "default", ktere je implicitni:
<a n:href=":Admin:Homepage:">Administrace</a>

To jsem udělal a mam tu další hlášku:

Invalid link: Cannot load presenter ‚Admin:Homepage‘, class ‚AdminModule\Presenters\HomepagePresenter‘ was not found.

Přitom Homepage presenter mam přímo v AdminModule → presenters → zde

Psal jsi ale, že ho máš přímo v AdminModule a teď, že ho máš jen ve FrontModule.
Pak tedy nechápu, proč se snažíš volat na presenter Homepage v modulu Admin.

Promiň blbě jsem se vyjádřil, jak ve FrontModulu tak i v AdminModulu mam Homepage presenter.
Proto nechápu, proč se mi nezavolá.

Zdeno1981
Člen | 114
+
0
-

a máš u obou správný namespace?

Editoval Zdeno1981 (16. 8. 2017 8:35)

kiCkZ
Člen | 153
+
+1
-

Už vidím kde je problém.

Chyba byla v názvu třídy, protože jak jsem je kopíroval a tvořil si strukturu, tak jsem zapomněl na přejmenování třídy na HomepagePresenter.

Díky každopádně za rady :)

Editoval kiCkZ (16. 8. 2017 8:39)