Modulová aplikace hází chybu Class ‚Presenters\BasePresenter‘ not found

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

Ahoj, dělám první modulovou aplikaci která obsahuje tři moduly a vypadá takto:

App
  AdminModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  GuestModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  RegisterModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  config
  model
  prestenter
   ErrorPresenter.php
   SignPresenter.php

A chtěl bych se zeptat jak udělám aby každý modul měl svůj BasePresenter? Laděnka mi vyhazuje chybu:

Fatal Error
Class 'Presenters\BasePresenter' not found

BasePresenter v GuestModule:

<?php

namespace GuestModule;

use Nette,
    App\Model,
    Nette\Application\UI\Form as Form;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter {

}

A HomepagePresenter v GuestModule:

<?php

namespace GuestModule;

use Nette,
	App\Model,
        Nette\Application\UI\Form as Form;


/**
 * Homepage presenter.
 */
class HomepagePresenter extends \Presenters\BasePresenter
{

}
voda
Člen | 561
+
0
-

Vzhledem k tomu, že oba presentery jsou ve stejném NS, tak ho nemusíš uvádět.

namespace GuestModule;

class HomepagePresenter extends BasePresenter
{
}
Hitny14
Člen | 90
+
0
-

voda napsal(a):

Vzhledem k tomu, že oba presentery jsou ve stejném NS, tak ho nemusíš uvádět.

namespace GuestModule;

class HomepagePresenter extends BasePresenter
{
}

Tak sem to upravil a na jednou nová chyba:

Nette\Application\BadRequestException #404

Cannot load presenter 'Guest:Homepage', class 'App\GuestModule\Presenters\HomepagePresenter' was not found in 'C:\xampp\htdocs\RS\app/GuestModule/presenters/HomepagePresenter.php'.
Hitny14
Člen | 90
+
0
-

Už mi t funguje ještě sem zapoměl smazat z configu:

mapping:
			*: App\*Module\Presenters\*Presenter

Dík za radu :)

Hitny14
Člen | 90
+
0
-

Ještě bych se chtěl zeptat jak se po přihlášení presmeruji do toho AdminModule.

$this->redirect("AdminModule:Homepage:default");

Toto mi nefunguje

Aleš Jandera
Člen | 24
+
0
-

Vyzkoušej

<?php
$this->redirect(":Admin:Homepage:default");
?>

Editoval Aleš Jandera (7. 12. 2014 17:40)

Hitny14
Člen | 90
+
0
-

Chyba:

Nette\Application\UI\InvalidLinkException

Cannot load presenter 'Admin:Homepage', class 'AdminModule\HomepagePresenter' was not found in 'C:\xampp\htdocs\RS\app/AdminModule/presenters/HomepagePresenter.php'.
Oli
Člen | 1215
+
0
-

@Hitny14 A jakou máš adresářovou strukturu? Máš to na tom místě, na kterým laděnka říká, že to hledá? A máš správnej namespace? Mapping jsi teda smazal?

Hitny14
Člen | 90
+
0
-

Adresářová struktura je:

App
  AdminModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  GuestModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  RegisterModule
    presenters
      HomepagePresenter.php
      BasePrestenter.php
    template
  config
  model
  prestenter
   ErrorPresenter.php
   SignPresenter.php

Presenter je přesně na tom místě kde laděnka říká. Mapping je smazaný. A presentery v AdminModule vypadají přesně takto:

HomepagePresenter:

<?php

namespace AdminModule;

use Nette,
	App\Model,
        Nette\Application\UI\Form as Form;


/**
 * Homepage presenter.
 */
class AdminPresenter extends BasePresenter
{

}

BasePresenter:

<?php

namespace AdminModule;

use Nette,
    App\Model,
    Nette\Application\UI\Form as Form;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter {
}
David Matějka
Moderator | 6445
+
+1
-

AdminPresenter !== HomepagePresenter

Hitny14
Člen | 90
+
0
-

Já sem blbec zapoměl jsem to přepsat.. Díky Ale teď mám zase chybu:

Nette\Application\BadRequestException #404

Cannot load presenter 'Guest:Admin', class 'GuestModule\AdminPresenter' was not found in 'C:\xampp\htdocs\RS\app/GuestModule/presenters/AdminPresenter.php'.

Pritom tu uz jsem jednou vyřešil tím že jsem smazal ten mapping

Editoval Hitny14 (7. 12. 2014 21:18)

Petr Hudík
Člen | 49
+
+1
-

Nejprve si prosím pečlivě přečti chybovou zprávu, co přesně ti to píše? co to podle Tebe znamená?Pokud koukám správně na adresářovou strukturu, tak ale presenter GuestModule/presenters/AdminPresenter.php nemáš.

Kam se snažíš odkázat? a odkud se snažíš odkázat?

Zápis odkazů v nette je relativní – pokud napíšeš default, jedná se o akci default aktuálního presenteru. Pokud napíšeš Homepage:status, jedná se o akci status, presenteru Homepage, ale pouze toho homepagePresenteru, který je ve stejném modulu. Pokud chceš odkázat na jiný modul přidej na začátek dvojtečku a uveď celou cestu. Zkus například :Admin:Homepage:

Editoval Petr Hudík (9. 12. 2014 7:18)