Podsestava pomoci NForm

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

Jde vytvorit formular viz. nize pomoci NForm ? Jde mi o podsestavu spojeni dvou tabulek napr. osoby a schopnosti, aby bylo mozne pridat k jedne osobe X schopnosti.

<form>
	<label>Jmeno:</label><input type="text" name="name" />
	<label>Adresa:</label><input type="text" name="adresa" />

	<label>Schopnosti:</label><input type="text" name="schopnosti[]" />
	<label>Schopnosti:</label><input type="text" name="schopnosti[]" />
	<label>Schopnosti:</label><input type="text" name="schopnosti[]" />
</form>

Editoval AceUnihoc (24. 8. 2008 12:10)

David Grudl
Nette Core | 8147
+
0
-

Nerozumím přesně, v čem má ležet ten zádrhel? V tom schopnosti[], tedy poli hodnot?

Pokud ano, tak to se dá řešit pomocí jmeného kontejneru. To je jakýkoliv kontejner implementující interface INamingContainer, např. FormContainer.

$form = new Form();
$form->addText('name', 'Jméno:');
$form->addText('address', 'Adresa:');

$sub = $form->addContainer('schopnosti');
$sub->addText('0', 'Schopnosti:');
$sub->addText('1', 'Schopnosti:');
$sub->addText('3', 'Schopnosti:');

$form->render();

Po odeslání vrátí $form->getValues() takovouto strukturu:

array(3) {
  "name" => string(6) "Franta"
  "address" => string(10) "Pod mostem"
  "schopnosti" => array(3) {
    0 => string(3) "..."
    1 => string(3) "..."
    3 => string(0) ""
  }
}
AceUnihoc
Člen | 19
+
0
-

Dik Davide to je presne ono. Jak jinak perfektni.

<?php
$sub = $form->addContainer('schopnosti');
$sub->addText('0', 'Schopnosti:');
$sub->addText('1', 'Schopnosti:');
$sub->addText('3', 'Schopnosti:');
?>