Modulová aplikace hází chybu Class ‚Presenters\BasePresenter‘ not found
- Hitny14
- Člen | 90
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
{
}
- Hitny14
- Člen | 90
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'.
- Aleš Jandera
- Člen | 24
Vyzkoušej
<?php
$this->redirect(":Admin:Homepage:default");
?>
Editoval Aleš Jandera (7. 12. 2014 17:40)
- Hitny14
- Člen | 90
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 {
}
- Hitny14
- Člen | 90
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
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)