Chyba při načtení formuláře

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

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
+
0
-

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
+
0
-

@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
+
0
-

Omlouvám se za mystifikaci.
Pro jistotu vyzkoušej requirmentsChecker
Sandbox či jiná ukázková aplikace ti jede?

Martin Černý
Člen | 5
+
0
-

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
+
0
-

A Error reporting: Fatal Error

Class ‚Nette\Application\AppForm‘ not found
nezapisuje to ale do logu

castamir
Člen | 629
+
0
-

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.

enumag
Člen | 2118
+
0
-

@Martin Černý, @castamir: Žádnej Nette\Application\AppForm neni, v 5.2 nejsou namespacy takže jen AppForm, případně NAppForm v prefixované verzi.

Martin Černý
Člen | 5
+
0
-

Díky, problém vyřešen. Bylo to tím, že moje verze Nette nepoužívala jmenné prostory.