Drobný problém s návodem z zdrojak.root.cz

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

Ahoj,
snažím se rozchodit první část ze seriálu na Zdrojáku (http://zdrojak.root.cz/…roduktivitu/) a mám problém s tím, že nefunguje javascriptová validace formuláře a vůbec zlobí kódování (přestože to ukládám v UTF-8.
Takto vypadá můj jediný soubor (index.php):

<?php
// zde prosím uveďte skutečnou cestu ke složce Nette uvnitř distribuce
require 'Nette/loader.php';

// pokud používáte verzi pro PHP 5.3, odkomentujte následující řádek:
use Nette\Framework;
use Nette\Forms\Form;

$form = new Form;
$form->addText('name', 'Jméno:')
        ->addRule(Form::FILLED, 'Zadejte prosím své jméno');

$form->addText('email', 'E-mail:')
        ->addRule(Form::EMAIL, 'Zadejte prosím platnou e-mailovou adresu');

$form->addCheckbox('promo', 'zasílejte mi reklamu');

$form->addTextArea('text', 'Vzkaz:')
        ->addRule(Form::FILLED, 'Napište nám prosím vzkaz');

$form->addSubmit('send', 'Odeslat');
// jestliže byl formulář odeslán
if ($form->isSubmitted()) {
        // a jestliže jsou všechny položky vyplněny správně
        if ($form->isValid()) {
                echo '<h1>Formulář byl odeslán</h1>';

                $values = $form->getValues();
                Debug::dump($values);
                exit;
        }

} else {
        // a jestliže nebyl odeslán, nastavíme výchozí hodnoty
        $form->setDefaults(array(
                'promo' => TRUE, // každý si přeje, abychom mu zaplevelili e-mailovou schránku
        ));
}

echo $form;
?>

při otevření v prohlížeči zobrazí toto:

<?php
<form action="" method="post" id="frm-">

<table>
<tr class="required">
	<th><label class="required" for="frm-name">Jméno:</label></th>

	<td><input type="text" class="text" name="name" id="frm-name" data-nette-rules="{op:':filled',msg:&quot;Zadejte pros\u00edm sv\u00e9 jm\u00e9no&quot;}" value="" /></td>
</tr>

<tr>
	<th><label for="frm-email">E-mail:</label></th>

	<td><input type="text" class="text" name="email" id="frm-email" data-nette-rules="{op:':email',msg:&quot;Zadejte pros\u00edm platnou e-mailovou adresu&quot;}" value="" /></td>
</tr>

<tr>
	<th>&nbsp;</th>

	<td><input type="checkbox" name="promo" id="frm-promo" checked="checked" /><label for="frm-promo">zasĂlejte mi reklamu</label></td>
</tr>

<tr class="required">
	<th><label class="required" for="frm-text">Vzkaz:</label></th>

	<td><textarea cols="40" rows="10" name="text" id="frm-text" data-nette-rules="{op:':filled',msg:&quot;Napi\u0161te n\u00e1m pros\u00edm vzkaz&quot;}"></textarea></td>
</tr>

<tr>
	<th>&nbsp;</th>

	<td><input type="submit" class="button" name="send" id="frm-send" value="Odeslat" /></td>
</tr>
</table>

</form>

?>

Nevíte prosím, kde je chyba? Určitě to bude něco jednoduchého, ale zatím na to nedovedu přijít…

Čelo
Člen | 42
+
0
-

viz. https://forum.nette.org/…clientscript

Princip je ten, že validační pravidla se zapíší do uživatelských HTML atributů (prefix data-) a podle nich se bude samotná validace řídit. Na programátora se tak přesouvá nutnost validační skript zaincludovat do stránky, tj. pokud žádný skript nezavolá, na straně klienta se nebude validovat. Tj. aby validace fungovala jako doposud, je třeba do stránky vložit skript netteForms.js, který zatím najdete v adresáři examples/forms. Tím se veškeré chování dostává mimo PHP a mizí tak ošklivá třída InstantClientScript nebo metoda setClientScript() rendereru.

Některé věci na Zdrojáku již dnes nemusí být úplně aktuální, tak raději zkus použít Nette 0.96 ať nejsi tolik překvapen změnami v 2.0 a nebo si projdi seznam změn.

Editoval Čelo (31. 10. 2010 17:59)

Johnny
Člen | 24
+
0
-

Děkuji mockrát, js validace již funguje skvěle. Mám ještě druhý problém, a totiž, když odešlu formulář, vypíše mi to, že nelze najít třídu Debug:
Fatal error: Class ‚Debug‘ not found in C:\xampp\htdocs\nette\index.php on line 29
jak to prosím mohu opravit? Děkuji

Aurielle
Člen | 1281
+
0
-

Používáš namespacovanou verzi… takže musíš Debug nahradit za \Nette\Debug