Více položek jako pole a jejich ruční vykreslení

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

Nazdárek,

jak zapisovat do formuláře pole jsem již objevil, ale co jsem neobjevil je, jak jednotlivé položky pole ručně vykreslit. Vůbec nevím jak ->control popř. ->label navázat na ty jednotlivé položky.

Mějme form z prvního příkladu:

$jmena = $form->addContainer('jmena');
$jmena->addText('1', 'Prvni');
$jmena->addText('2', 'Druhe');

Jak vypíšu jednotlivé textové položky pomocí ->control? V případě klasického textového inputu by to bylo $form[‚neco‘]->control; ale jak to bude u toho pole?

Děkuji
Bernard

Off: Můžu se zeptat, proč všechny vyřešené témata zamykáte? Nebylo by lepší je nechat otevřené, aby se do nich daly vkládat další příspěvky spojené s tématem, které se už řešilo? Člověk by pak v jednom tématu mohl najít další věci, na které by třeba později narazil nebo které by se mu mohly hodit..

redhead
Člen | 1313
+
0
-

no nevím to jistě, ale řekl bych že takto

echo $form['jmena']['1']->control;

vyzkoušej..

off: nevím proč, ale také tento přístup moc nechápu…

Milhauz
Člen | 26
+
0
-

Mělo by to jít takto:

{foreach $form['jmena']->getControls() as $control}
  {$control->label}: {$control->control}
{/foreach}

Získáš všechny controly v daném containeru.

mejla
Člen | 14
+
0
-

Bernard Williams napsal(a):

Off: Můžu se zeptat, proč všechny vyřešené témata zamykáte? Nebylo by lepší je nechat otevřené, aby se do nich daly vkládat další příspěvky spojené s tématem, které se už řešilo? Člověk by pak v jednom tématu mohl najít další věci, na které by třeba později narazil nebo které by se mu mohly hodit..

Souhlasím s tebou a argument co napsal David zde je trochu sporný..

Bernard Williams
Člen | 207
+
0
-

Milhauz napsal(a):

Mělo by to jít takto:

{foreach $form['jmena']->getControls() as $control}
  {$control->label}: {$control->control}
{/foreach}

Získáš všechny controly v daném containeru.

Děkuju, tohle funguje, ale není možné to nějak vypsat bez toho, abych to musel procházel cyklem foreach?

Zatím to obcházím takto:

foreach ($form['jmena']->getControls() as $key => $control) {
  $input['fotka'][$key] = $control->control;
}

a pak to můžu obyčejně vykreslit kde chci: $input['fotka'][$id]

Editoval Bernard Williams (25. 8. 2009 13:17)