přechod na na verzi 2.0 ->nenalezená třída
- masterr
- Začátečník | 141
Fatal error: Class ‚Environment‘ not found in /DISK2/www/neco/app/bootstrap.php on line 25
Původně jsem měl verzi 1.0 jen jsem v libs nahradil současnou složku Nette za tu složku z nette 2.0alpha + jsem smazal temp.
Ta třída tam normálně je, čim to je?
Můj bootstrap.php:
require LIBS_DIR . '/Nette/loader.php';
Environment::loadConfig();
$application = Environment::getApplication();
$application->catchExceptions = FALSE;
// Step 3: Configure application
// 3a) get and setup a front controller
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;
dibi::connect(Environment::getConfig('database'));
// Step 4: Setup application router
$router = $application->getRouter();
// mod_rewrite detection
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('<presenter>/<action>/<id>', array(
'presenter' => 'Front:Default',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('Front:Default:default');
}
FormContainer::extensionMethod('FormContainer::addCheckboxList', array('CheckboxList', 'addCheckboxList'));
Debug::enable(Debug::DEVELOPMENT);
Environment::setMode(Environment::DEVELOPMENT);
Debug::$strictMode = TRUE;
// Step 5: Run the application!
$application->run();
- masterr
- Začátečník | 141
Mám verzi pro php 5.2. Tam se to nedá použít? Nevím jaký jsou rozdíli php ve verzi 5.2 a 5.3.
Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING…
require LIBS_DIR . '/Nette/loader.php';
use Nette\Environment;
Environment::loadConfig();
//...
$application = Environment::getApplication();
$application->catchExceptions = FALSE;
Editoval masterr (29. 11. 2010 19:51)
- masterr
- Začátečník | 141
Máš pravdu, dal jsem tam ted tu verzi bez prefixů. Ale ted mi to hází:
Fatal error: Call to undefined method Debug::addColophon() in /DISK2/www/neco/libs/dibi/libs/DibiConnection.php on line 57
původní instalaci jsem dělal podle "":https://doc.nette.org/cs/quickstart
- masterr
- Začátečník | 141
TAk jsem to dal na localhost ->verze 2.0alpha php 5.3
a hází mi to chybu
Fatal error: Class ‚SimpleRouter‘ not found in
D:\lh\p\app\bootstrap.php on line 60
use Nette\Environment;
require LIBS_DIR . '/Nette/loader.php';
Environment::loadConfig();
$application = Environment::getApplication();
$application->catchExceptions = FALSE;
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;
dibi::connect(Environment::getConfig('database'));
// Step 4: Setup application router
$router = $application->getRouter();
// mod_rewrite detection
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('<presenter>/<action>/<id>', array(
'presenter' => 'Front:Default',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('Front:Default:default');
}
FormContainer::extensionMethod('FormContainer::addCheckboxList', array('CheckboxList', 'addCheckboxList'));
Debug::enable(Debug::DEVELOPMENT);
Environment::setMode(Environment::DEVELOPMENT);
Debug::$strictMode = TRUE;
// Step 5: Run the application!
$application->run();
Co je s tim za problém? Ve verzi 1.0 php 5.2 mi to jelo.
- masterr
- Začátečník | 141
Dík a ted eště :
Fatal error: Uncaught exception ‚ReflectionException‘ with message ‚Class FormContainer does not exist‘ in D:\lh\p\libs\Nette\Utils\Object.php:115 Stack trace: #0 D:\lh\p\libs\Nette\Utils\Object.php(115): ReflectionClass->__construct(‚FormContainer‘) #1 D:\lh\p\app\bootstrap.php(62): Nette\Object::extensionMethod(‚FormContainer::…‘, Array) #2 D:\lh\p\index.php(13): require(‚D:\lh\p\app\boo…‘) #3 {main} thrown in D:\lh\p\libs\Nette\Utils\Object.php on line 115
- masterr
- Začátečník | 141
JJ, to funguje dik, taky mě to mohlo napadnout…
Ted:
Class ‚Presenter‘ not found
File: D:\lh\p\app\presenters\BasePresenter.php Line: 3
3: abstract class BasePresenter extends Presenter {
4:
5: public $oldModuleMode = FALSE;
6: public $oldLayoutMode = FALSE;
7: }
Neptal bych se kdybych vedel co s tím…
- Solution
- Člen | 50
:-D V php 5.3 musíš pro všechny Nette komponenty, volat namespace, nejlépe se vždy podívej do konkrétního souboru v libs a podívej se pod jakým namespace je, popř. pokud používáš nějaký kvalitnější IDE, tak když začneš psát Nette\, tak on ti bude napovídat, jinak:
<?php
use Nette\Application\Presenter; // Do base
abstract class BasePresenter extends Presenter {
public $oldModuleMode = FALSE;
public $oldLayoutMode = FALSE;
}
?>
- masterr
- Začátečník | 141
Je tady někde nějaký článek o namespace? Něco jsem letmo někde četl…
Momentálně používám PHPedit (dneska jsem ho nainstaloval), nic mi nanapoví když píšu Nette\. Teda napoví, ale jen občas,,když se mu chce".
Nette\Application\BadRequestException #404
Cannot load presenter ‚Front:Default‘, class ‚FrontModule\DefaultPresenter‘ was not found in ‚D:\lh\p/app/FrontModule/presenters/DefaultPresenter.php‘.
- Solution
- Člen | 50
Fuu, no musíš do každého souboru(presenter, model), vepsat na začátek, samozřejmě jen u těch, co mají spadat k frontmodule:
<?php
namespace FrontModule;
?>
A rozdělit to správně do složek, mmnt, snad tu najdu popis.
https://doc.nette.org/…ry-structure#… – adresářová
struktura
- masterr
- Začátečník | 141
JJ dík, mě to pak taky napadlo, ale už jsem měl vyplý notes…
Ted mám problém s dibi v modelu, napsal jsem to takle:
namespace FrontModule;
use dibi;
class Goods
{…
}
Fatal Error
Maximum execution time of 30 seconds exceeded
File: D:\lh\p\libs\Nette\Debug\Debug.php Line: 415
Když jsem to obrátil :
2: use dibi;
3: namespace FrontModule;
4:
5: class Goods
6: {
tak
Fatal Error
Class 'Nette\DebugHelpers' not found
File: D:\lh\p\app\models\GoodsModel.php Line: 2
2: use dibi;
3: namespace FrontModule;
To by mi němelo házet, když mám v bootstrap use Nette\Debug; , ne?
- Neo
- Člen | 5
Mohu se zeptat čím to nakonec bylo? Mám stejný problém ( Class DebugHelpers' not found ), používám verzi Nette Framework 2.0-alpha2 pro PHP 5.2 bez prefixů tudíž chybu s namespace bych mít neměl a děje se mi to u vlastní třídy zděděné od Object, pokud dědění odstraním chyba zmizí.
- stefi023
- Člen | 71
Ted jsem resil podobny problem s Class
'Nette\DebugHelpers' not found
a u me byla chyba v tom, ze jsem
dedil urcitou tridu a nasledne prepisoval jednu metodu a rozsiroval pocet
parametru, a u novych parametru jsem nenastavil defaultni hodnotu. tzn
neco jako
<?php
class A {
public function methodA($param1) {}
}
class B extends A {
public function methodA($param1,$param2) {}
}
?>
jsem upravil na neco jako
<?php
class A {
public function methodA($param1) {}
}
class B extends A {
public function methodA($param1,$param2=null) {}
}
?>
i kdyz porad nevim, proc mi to nezachytila ladenka spravne, v jinych pripadech tento typ chyb zachyti spravne
- na1k
- Člen | 288
nebudu otevírat noé vlákno; také mám problém s
Class 'Nette\DebugHelpers' not found
:(
Laděnka hlásí chybu na řádku s regulárním výrazem, takže netuším jak to souvisí s Nette. Že by regulár vyhazoval nějakou chybu a Debug se to snažil ošetřit?
Jedná se o metodu formatTemplateFiles
v mém BasePresenteru a
snažím se web převést na aktuální 2.0-alpha2 z downloadové stránky.
Verze kterou nahrazuji byla někde z doby kolem WebExpa, kdy se měnilo
číslování verzí (bohužel už je to přepsané, takže nemůžu říct
přesně).
<?php
public function formatTemplateFiles($presenter, $view) {
/* ... */
$cnt = 0;
$noDef = \preg_replace('/Default$/', '', $path, -1, &$cnt); /* zde ukazuje laděnka chybu */
/* ... */
}
?>
Omlouvám se, psal jsem rychleji než přemýšlel. Zkusil jsem
laděnku vypnout, resp. nechat ji logovat do souboru a dostal jsem
Call-time pass-by-reference has been deprecated
a problém
vyřešil :)
Přesto ale stále nechápu, proč na chybu neupozornila laděnka?
Editoval na1k (22. 1. 2011 13:47)