předběžné generování formuláře do stránky
- dnd
- Člen | 16
Používám jen NForm pro usnadnění validace formuláře ve statických
stránkách. Stránky jsou bohužel postaveny tak, že obsah každé stránky je
uveden ve svém souboru (o-domacich-upirech.php) jako string v proměnné
$content='';
. Index pak zpracovává adresu a podle toho includuje
požadovaný soubor a dále pak pracuje se stringem v proměnné. A do této
proměnné jsem ručně zapojil nette prvky formuláře
<?php
$form = new NForm('Kontakt');
$form->addText('jmeno', 'Jméno');
$form->addText('mail', 'E-mail *')
->addCondition(NForm::FILLED)
->addRule(NForm::EMAIL,'emailová adresa nemá správný formát');
$form->addText('tel','Telefon *')
->addConditionOn($form['mail'], ~NForm::FILLED)
->addRule(NForm::FILLED,'vyplňte alespoň telefon nebo email');
$form->addSubmit('submitKontakt',' ');
$content = '<h1>kontakt</h1>
<form action="" method="post" id="frm-Kontakt">
<p>
'.$form['jmeno']->label.'
'.$form['jmeno']->control.'
</p>
<p>
'.$form['mail']->label.'
'.$form['mail']->control.'
</p>
<p>
'.$form['tel']->label.'
'.$form['tel']->control.'
<span class="info">Musíte uvést alespoň jeden kontaktní údaj, abychom Vám mohli odpovědět.</span>
</p>
<p><span>*</span> povinný údaj</p>
'.$form['submitKontakt']->control.'
</form><script src="/js/netteForms.js"></script>';
?>
Bohužel (pokud dobře chápu), takhle nefunguje serverové zpracování.
Nezpracuje se po odeslání
$form->isSubmitted();
Nemohu použít $form->render('begin')
protože vypíše
<form… > přímo do stránky, ale já ho potřebuji do proměnné
$content, která se vypíše (s celým formulářem) až později. Takže teď
akorát odchytávám $_POST a nemůžu využít ani getValues() :-(
Nedochází mi, proč se $form po odeslání nezpracuje. Co potřebuje
proběhnout, aby to fungovalo?
- Ot@s
- Backer | 476
Hádám, že si budeš muset do projektu přidat ještě i Latte.
:-)
Tj. mít latté šablonu s obsahem stránky a formulářema (jak potřebuješ)
a pak šablonu vyrenderuješ do $content
.
// v $form je definice formulare NForm
$template = new NFileTemplate('o-upirech.latte'); // soubor se šablonou
$template->form = $form;
$template->osloveni = 'Osloveni';
ob_start();
$template->render();
$content = ob_get_contents();
ob_end_clean();
K tomu zachycení odeslání – místo
$form->isSubmitted()
vyzkoušej
$form->isSuccess()
.
Editoval Ot@s (24. 2. 2012 14:26)