Moduly – cannot load presenter
- echo
- Člen | 134
Listoval jsem zde na fóru, našel mnoho podobných témat, ale žádné mi bohužel nedalo hledanou odpověď.
Mám adresáře:
/apps/AdminModule/presenters/...(UserRegistrationPresenter.php)
/apps/AdminModule/...(models, templates,...) /...
Route následující:
$router[] = new Route('<module>/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'UserRegistrationPresenter',
'action' => 'default',
'id' => NULL,
));
Po zadání url do prohlížeče:
Cannot load presenter 'Admin:Userregistration', class 'AdminModule\UserregistrationPresenter' was not found in 'D:\Installed\XAMPP\htdocs\gsh\document_root/../app/AdminModule/presenters/UserregistrationPresenter.php'.
A to je na tom zajímavé. V souboru UserRegistrationPresenter.php mám totiž:
final class UserRegistrationPresenter {...}
Zkoušel jsem i:
final class AdminModule\UserregistrationPresenter {...}
To ale skončí syntax chybou.
Opravdu nevím, v čem vězí chyba. Používám verzi 0.9 pro php 5.3. Temp jsem vyprázdnil.
Díky za náměty.
Echo
Editoval echo (29. 9. 2010 15:33)
- _Martin_
- Generous Backer | 679
Pro ujasnění promaž temp a ověř následující:
- PHP verze 5.2.x
- router:
$router[] = new Route('<module>/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'UserRegistration',
'action' => 'default',
'id' => NULL,
));
- adresáře:
define('APP_DIR', WWW_DIR . '/../app');
- presenter uložen v
/app/AdminModule/presenters/UserRegistrationPresenter.php
a definován:
final class Admin_UserRegistrationPresenter extends Presenter // či nějaký BasePresenter
{
// ...
}
- zadávaná adresa v prohlížeči je
http://localhost/
Vše souhlasí?
- pave.kucera
- Člen | 122
Jestli používáš Nette pro php 5.3.x, tak presenter v modulu Admin se bude deklarovat takto:
<?php
namespace AdminModule;
final class UserRegistration extends \Nette\Application\Presenter {
...
}
?>
- _Martin_
- Generous Backer | 679
@gmvasek: To by mělo být v pořádku, # říká, že se odkazuješ na blok, není to součástí názvu (ve skeletonu je to taky bez #).
@echo:
Takže máš soubory
/app/AdminModule/templates/@layout.phtml
/app/AdminModule/templates/UserRegistration/default.phtml
a nic se ti nezobrazí?
Jakou verzi Nette používáš? U 0.9.x verze je třeba mít v
BasePresenter.php
zapnuto používání nových šablon
public $oldLayoutMode = FALSE;
- echo
- Člen | 134
Veni, vidi, vici,
nevím, jak se to podařilo, ale povedlo se. Pár věcí jsem popřehazovat a
najednou to funguje. K těm adresářům:
Chtělo to po mně, abych přesunul soubory z:
/app/AdminModule/templates/@layout.phtml
/app/AdminModule/templates/UserRegistration/default.phtml
do:
/app/templates/AdminModule/@layout.phtml
/app/templates/AdminModule/UserRegistration/default.phtml
Tak jsem to přehodil a je pokoj. :-)