vnořené skupiny ve fornuláři (addGroup na Nette\Forms\Container)

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

Chtěl bych si vytvořit komponentu, která bude obsahovat část formuláře (několik polí). Našel jsem vlákno, kde se to rozebírá. Protože tuhle komponentu chci mít opakovatelnou (řekněme možnost přidat víc adres k firmě), chci využít HosipLanův replikátor.

A teď problém. Naivně jsem zkusil tohle (zbytek kódu):

<?php
class AddressContainer extends BaseContainer
{

	protected function configure()
	{
		$this->addGroup('adresa');		// tady máme problém, Houstone
		$this->addText("street", "Ulice:")
			->addRule(Form::MAX_LENGTH, 'Jméno ulice nesmí být delší než %d znaků', 30);
		$this->addText("zipCode", "PSČ");
		$this->addText("city", "Město");
	}

}
?>

Skupina má sloužit pro odlišení „mikroformulářů“. Přidat skupinu je možné na formuláři, ne na kontejneru.

  1. Existuje nějaký důvod, proč? Brání něco přesunu (mimo to, že neexistuje pull request)?
  2. Jak to řešíte vy? Ručním vykreslením, nebo na to nikdo nenarazil

Narazil jsem na jednu starší diskusi, které jsem nezkoušel – nelíbí se mi, že v komponentě neznám úroveň zanoření (musel bych ji zjišťovat).

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Na co přesně potřebuješ to addGroup() zavolání? Skupiny jsem nikdy doposud nepoužil a zajímalo by mě, z jakého důvodu je ty potřebuješ. Kvůli automatickému vykreslování (tedy <fieldset>)?

BigCharlie
Člen | 283
+
0
-

Přesně tak.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Hm, nejsem si teda na stoprocent jistý, ale tohle Nette neumí. Pull request jednoznačně chybí, to jo :). Sám jsem groupy nikdy nepoužil, možná se ještě před přípravou pull requesty optej, jestli to nemá nějaké filozofické překážky :).

KingKoca
Člen | 25
+
0
-

Container neumi addGroup, ale umi setCurrentGroup($group). Jedinej zadrhel je, ze Group (tedy <fieldset>) musi byt vytvoren na tride Form.

Resili to (a celkem uspesne) tady: https://forum.nette.org/…dane-skupiny

Semik
Backer | 135
+
0
-

KingKoca napsal(a):

Container neumi addGroup, ale umi setCurrentGroup($group). Jedinej zadrhel je, ze Group (tedy <fieldset>) musi byt vytvoren na tride Form.

Resili to (a celkem uspesne) tady: https://forum.nette.org/…dane-skupiny

Oživuji.

Podle mého to úspěšně vyřešeno stále není. Není možné např. do kontejneru vložit skupinu checkboxů, a přidat jim label → addGroup. Celkem častá situace.