připojení latte k formulář
- vk83
- Člen | 22
Ahoj,
s pomocí: https://doc.nette.org/cs/forms
jsem si vytvořil formulář (MujForm.php) a latte šablonu (MujForm.latte). Oba
soubory mám ve stejné složce, ale nevím jak je mám spojit, abych pak někde
v jiné stránce mohl formulář lehce přidat.
(mám Nette Framework 2.0.4)
Díky.
Editoval vk83 (11. 8. 2012 12:15)
- Ot@s
- Backer | 476
Předpokládám, že chceš pracovat komplet v Nette. Máš ho stážený a v něm najdi sandbox. Ten můžeš použít jako základ svojí aplikace/prezentace.
Pak si usmyslíš, že chceš (třeba) na homepage přihlašovací formulář. Pak stačí do HomepagePresenter.php přidat něco jako:
protected function createComponentSignInForm() {
$form = new Nette\Application\Form;
$form->addText('name', 'Jméno:');
$form->addPassword('password', 'Heslo:');
$form->addSubmit('login', 'Přihlásit se');
$form->onSuccess[] = callback($this, 'signInFormSubmitted');
return $form;
}
// volá se po úspěšném odeslání formuláře
public function signInFormSubmitted(UI\Form $form)
{
$values = $form->getValues();
// ...
$this->flashMessage('Byl jsi úspěšně přihlášen.');
$this->redirect('Homepage:');
}
Pak stačí do app/templates/Homepage/default.latte
někam
dovnitř do bloku {#content}{/#}
přidat
{control signInForm}
a máš to.
- vk83
- Člen | 22
Díky, ale já jsem chtěl asi něco jiného.
Jak připojit latte pro formulář (latte s inputama) k formu?
Kdybych použil to, co jsi mi poradil, tak si ještě chci vytvořit SignInForm.latte. A mě zajímá, jak tomu nyní mám říci, že se pro vykreslení toho formuláře má použít to moje SignInForm.latte?
- Elijen
- Člen | 171
Podle mě ne. Proč dědíš od Form? Správně bys asi měl dědit od Nette\Application\UI\Control a Form vytvářet pomocí továrničky sub-komponenty. Nějak takhle:
class MujForm extends \Nette\Application\UI\Control
{
public function render()
{
$this->template->setFile(__DIR__ . "/MujForm.latte");
$this->render();
}
public function createComponentForm()
{
$form = new \Nette\Application\UI\Form();
//...
//inicializace formulare
//...
return $form;
}
}
- vk83
- Člen | 22
Na té stránce: https://doc.nette.org/cs/forms
byl právě také příklad malého formuláře (class SignInForm extends
UI\Form). Říkal jsem si, že když dělám pouze formulář, bude lepší
použít tohle a přímo všechno podědit po Formu než po Control.
Ale pokud tedy není možné nastavit takto vytvořenému formuláři jeho latte šablonu, tak asi budu muset postupovat, jak jsi radil, a použít Control.