Chyba při načtení formuláře
- Martin Černý
- Člen | 5
Zdavíčko,
s Nette víceméně začínám a narazil jsem na chybu, přes kterou se
nemůžu dostat.
Když chci použít formulář, vyhazuje mi debugger chybu: Fatal error: Class
‚Nette\Forms\Form‘ not found in…
Nefungje mi to ani v presenteru ani v příkladě z dokumentace:
<? require ‚../libs/Nette/loader.php‘;
use Nette\Forms\Form;
$form = new Form;
$form->addText(‚name‘, ‚Jméno:‘);
$form->addPassword(‚password‘, ‚Heslo:‘);
$form->addSubmit(‚send‘, ‚Registrovat‘);
echo $form;?>
Vyzkoušel jsem i AppForm a Nette/Application/UI/Form, v normální
i minified verzi, ale nic.
Class not found je sice PHP chyba, ale mě vyskakuje pořád, takže to bude nejspíš něco špatně v mojí aplikaci, možná v knihovnách.
Budu rád za zkušenosti s podobným problémem a rady co s tím
- castamir
- Člen | 629
Předpokládám, že ignoruješ klasickou nette aplikaci a jen
zkoušíš některé části zcela samostatně. Dále předpokládám, že ten
loader.php není „mini“ ale nezkoprimovaný.
V normální aplikaci (zkus si spustit sandbox) je ve složce /app soubor
bootstrap.php ve kterém se aplikace v Nette startuje a nalezneš zde
i zavolání „robotloaderu“, který načte všechny třídy v Nette. Pokud
chceš používat jen některé části Nette, jako třeba formulář,
doporučuju používat verzi mini a/nebo alespoň prostudovat ukázkové
příklady, jež nalezneš ve stejném archivu, který jsi spolu s Nette
stáhl, kde máš názorně ukázáno, jak toho dosáhnout
trošku lépe…
Doporučuju si nejprve projít dokumentaci, zejména quickstart a pak ukázkové aplikace
Editoval castamir (2. 1. 2013 0:12)
- enumag
- Člen | 2118
@castamir: Neminifikovaná verze nepoužívá RobotLoader pro loadování Nette tříd.
Pokud je tam nějaký problém, mělo by to dle mého názoru spadnout na krovky buď při volání require nebo během autoloadingu. Takhle naprosto nechápu, proč to nefunguje.
Verze PHP? Verze Nette? error_reporting?
- castamir
- Člen | 629
Omlouvám se za mystifikaci.
Pro jistotu vyzkoušej requirmentsChecker
Sandbox či jiná ukázková aplikace ti jede?
- Martin Černý
- Člen | 5
Používám to i v aplikaci, ten útržek kódu nahoře jsem přidal, aby bylo vidět, že v něm chyba neni určitě. Ukázkové aplikace mi jdou, v sandboxu jsem si taky napsal aplikaci, která načítá různé položky z databáze a to funguje. RequirementsChecker ukazuje splnění podmínek, jenom chybí Memcache extension.
PHP 5.3.17, Nette 2.0.6
- Martin Černý
- Člen | 5
A Error reporting: Fatal Error
Class ‚Nette\Application\AppForm‘ not found
nezapisuje to ale do logu
- castamir
- Člen | 629
Nette\Application\AppForm
se používá v Nette pro PHP
5.2. V Nette pro PHP 5.3 a novější se pro formuláře používá třída
Nette\Application\UI\Form. Zkontroluj si, jakou třídu doopravdy vytváříš.
Jinak na lokálu se ti automaticky zobrazuje laděnka. Dokud si to
nepřenastavíš v bootstrap. Pro jistotu si ale zkontroluj práva pro zápis
do složky s logy.
- Martin Černý
- Člen | 5
Díky, problém vyřešen. Bylo to tím, že moje verze Nette nepoužívala jmenné prostory.