Class ‚BasePresenter‘ not found

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

Ahoj,

skript mi padá na:
Class 'BasePresenter' not found

Skúšal som:

  • mazať temp, chmod 777 má nastavený
  • updatovať na najnovšiu verziu Nette pre PHP 5.3
  • bootstrap obsahuje Environment::loadConfig();
  • code-checker nehlási na /app ani /document_root žiadne chyby
  • requirements checker tiež hlási, že je všetko OK a safe mode je vypnutý
  • strict mode tiež nič nehlási
  • na localhoste PHP 5.3.3 beží OK, na servery PHP 5.3.3 to padá na nenájdení BasePresenteru
  • config.ini obsahuje zapnutie RobotLoaderu
service.Nette-Loaders-RobotLoader.factory = Nette\Configurator::createRobotLoader
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

DefaultPresenter.php

namespace FrontModule;

class DefaultPresenter extends \BasePresenter
{

BasePresenter.php

<?php
use Nette\Environment;
use Nette\Application\Presenter;
use Nette\Application\AppForm;
use Nette\Forms\Form;
use Nette\Security\AuthenticationException;

abstract class BasePresenter extends Nette\Application\Presenter
{

Editoval Santas (19. 5. 2011 16:11)

22
Člen | 1478
+
0
-

nevím, ale v poslední verzi nic jako Nette\Application\Presenter není, když tak Nette\Application\UI\Presenter

nanuqcz
Člen | 822
+
0
-

Ahoj, a nemáš to zapnutí RobotLoaderu v configu jen pro [development] mod?

Kdyžtak, zkus si vypsat třídy, které RobotLoader načetl, jestli tam bude i BasePresenter:

var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() );
Santas
Člen | 11
+
0
-

22: používam najnovšiu bežne uvoľnenú verziu tj Nette 2.0 alpha, nie vývojovú 2.0 beta

xxxObiWan:

array(1) {
  ["Nette\Framework"]=>
  string(56) "/usr/local/www/example.org/htdocs/n/libs/Nette/loader.php"
}

Editoval Santas (19. 5. 2011 17:13)

nanuqcz
Člen | 822
+
0
-

Mě to vrátí

array(99) {
  ["BasePresenter"]=>
  string(92) "/mnt/data/accounts/w/.../app/presenters/BasePresenter.php"
  ["GalleriesPresenter"]=>
  string(97) "/mnt/data/accounts/w/.../app/presenters/GalleriesPresenter.php"
  ["ErrorPresenter"]=>
  string(93) "/mnt/data/accounts/w/.../app/presenters/ErrorPresenter.php"
  ...

takže bych tipoval, že se ti RobotLoader vůbec neaktivuje.

Btw, kam jsi ten kód var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() ); přesně dal? (jen se chci ujistit, že není někde na začátku bootstrapu, kde ještě RobotLoader neměl šanci prohledat adresáře)

EDIT: Poslední odstavec ignoruj, nalezené třídy se mi vypíšou ať ten kód dám kamkoliv. Takže mě napadá už fakt jen ten config.ini, můžeš ho tu vypsat celý?

Editoval xxxObiWan (19. 5. 2011 17:40)

Santas
Člen | 11
+
0
-

config.ini

[common]
; PHP configuration
php.date.timezone = "Europe/Prague"

; variables
variable.tempDir = %appDir%/temp
variable.logDir = %appDir%/log

; services
service.Nette-Loaders-RobotLoader.factory = Nette\Configurator::createRobotLoader
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

service.Nette-Security-IAuthenticator = Security_Authenticator
service.Nette-Security-IAuthorizator = Security_Acl

security.salt = ********

[common.database]
*****

[production < common]

[development < common]

bootstrap.php bez zbytocnych komentarov

<?php
use Nette\Debug;
use Nette\Environment;
use Nette\Application\Route;
use Nette\Application\SimpleRouter;

require LIBS_DIR . '/Nette/loader.php';
require LIBS_DIR . '/dibi/dibi.php';

Debug::$strictMode = true;
Debug::enable(Debug::DEVELOPMENT);

Environment::loadConfig();

$application = Environment::getApplication();

dibi::connect(Environment::getConfig('database'));

$router = $application->getRouter();

if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
	$router[] = new Route('index.php', array(
		'module' => 'Front',
		'presenter' => 'Default',
	), Route::ONE_WAY);

  $router[] = new Route('admin/<presenter>/<action>/<id>', array(
    'module' => 'Admin',
		'presenter' => 'Default',
		'action' => 'default',
    'id' => NULL,
	));

  $router[] = new Route('',array(
		'presenter' => 'Front:Default',
		'action' => 'default',
		'id' => NULL,
	));

	$router[] = new Route('<presenter>/<action>/<id>', array(
		'presenter' => 'Front:Default',
		'action' => 'default',
		'id' => NULL,
	));
} else {
	$router[] = new SimpleRouter('Front:Default:default');
}
var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() );

$application->run();