Dynamický počet inputů – procházení for cyklem

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

Dobrý den,

mám vytvořenou fotbalovou tabulku (ID, tym, vyhry, remizy, prohry, vstreleno, inkasovano, body, sezona_id) a chci vytvořit její editační formulář.
Jelikož každou sezonu může byt rozdílný počet týmů v tabulce, získám počet týmu z tabulky v dané sezoně a poté for cyklem přidávám do formuláře inputy:

for($i = 1; $i <= $pocetTymu; $i++){
	$form->addText('tym' . $i);
	$form->addText('v' . $i);	//vyhry tzn. name bude v1, v2, v3...
	$form->addText('r' . $i);	//remízy tzn. name bude r1, r2, r3...
	$form->addText('p' . $i);	//prohry tzn. name bude p1, p2, p3...
	$form->addText('vs' . $i);	//vstřeleno tzn. name bude vs1, vs2, vs3...
	$form->addText('in' . $i);	//inkasováno tzn. name bude in1, in2, in3...
	$form->addText('b' . $i);	//body tzn. name bude b1, b2, b3...
}

Zároveň jim nastavuji hodnoty z databáze (v kódu jsem neuvedl). Problém nastává, když chci uložit upravené inputy (hodnoty – např. body, výhry, …). Zavolám funkci ulozit(Form $form), ve které mám for cyklus stejný jako při vytváření inputů, ale nevim jak napsat jméno inputu při průchodu for cyklem:

for($i = 1; $i <= $pocetTymu; $i++){
	$this->tabulka->upravData($form->values->tym.$i);	//nevím jak mám spojit název inputu tym+číslo, abych získal tym1, tym2, tym3, to samé i u dalších položek výhry, remízy, prohry, ...
}

Jde to vůbec nějak takhle udělat? Napadlo mě, že možná nějak přes pole např. body[0], body[1], ..
Prosím jak na to?

petr.pavel
Člen | 535
+
0
-

Já bych spíš doporučil místo .$i použít container s názvem $i.

JohnyJJP
Člen | 6
+
0
-

imartyn napsal(a):

for($i = 1; $i <= $pocetTymu; $i++){
	$this->tabulka->upravData($form->values->tym.$i);	//nevím jak mám spojit název inputu tym+číslo, abych získal tym1, tym2, tym3, to samé i u dalších položek výhry, remízy, prohry, ...
}

Co treba

for($i = 1; $i <= $pocetTymu; $i++){
	$name = 'tym' .  $i;
 	$this->tabulka->upravData( $form->values->$name );
}

?

Nebo

$formValues = $form->getValues();
for($i = 1; $i <= $pocetTymu; $i++){
 	$this->tabulka->upravData( $formValues[ 'tym' . $i ] );
}

?

Editoval JohnyJJP (30. 3. 2013 21:13)