použití addContainer a střídání výpisu
- ZETCHA
- Člen | 59
Netušíte někdo jak nastavit aby se výsledek tohohle:
<?php
$container = $form->addContainer('pole');
$container2 = $form->addContainer('pole2');
$container->addText('t0', 'text0');
$container->addText('t1', 'text1');
$container2->addText('a', 'text0');
$container2->addText('b', 'text1');
?>
nevypisoval takto:
<label for="t0"></label><input type="text" name="t0" />
<label for="t1"></label><input type="text" name="t1" />
<label for="a"></label><input type="text" name="a" />
<label for="b"></label><input type="text" name="b" />
ale takto na střídačku:
<label for="t0"></label><input type="text" name="t0" />
<label for="a"></label><input type="text" name="a" />
<label for="t1"></label><input type="text" name="t1" />
<label for="b"></label><input type="text" name="b" />
toho se nemůžu dopátrat.
Předem díky za radu.
- ZETCHA
- Člen | 59
Má chyba, neřekl jsem že je generuji takto:
<?php
$skladem = $form->addContainer('skladem');
$uzakazky = $form->addContainer('uzakazky');
$x = 0;
foreach ($data as $polozka) {
$skladem->addText((string) $x, 'Skladem:')->setValue($polozka->skladem);
$uzakazky->addText((string) $x, 'U zakázky:')->setValue($polozka->uzakazky);
$x++;
}
?>
Takže na přeskáčku definovaný jsou. Nebo ne?
Ve výsledku teda ne e! :-(
Editoval ZETCHA (7. 1. 2010 11:15)
- Ondřej Mirtes
- Člen | 1536
Tak bych asi vytvořil dva foreache za sebou, který ti to přidaj v tom pořadí, v jakým to chceš vypisovat.
- ZETCHA
- Člen | 59
Upravil jsem to takto:
<?php
$skladem = $form->addContainer('skladem');
$uzakazky = $form->addContainer('uzakazky');
$x = 0;
foreach ($data as $polozka) {
$skladem->addText((string) $x, 'Skladem:')->setValue($polozka->skladem);
$x++;
}
$x = 0;
foreach ($data as $polozka) {
$uzakazky->addText((string) $x, 'U zakázky:')->setValue($polozka->uzakazky);
$x++;
}
?>
A výsledek stejný! :-(
To jsem blázen.
Editoval ZETCHA (7. 1. 2010 12:13)
- ZETCHA
- Člen | 59
Hele v tom foreach problém nebude.
Udělal jsem to ručně:
<?php
$skladem->addText('jedna', 'Skladem:')->setValue($polozka->skladem);
$uzakazky->addText('jedna', 'U zakázky:')->setValue($polozka->uzakazky);
$skladem->addText('dva', 'Skladem:')->setValue($polozka->skladem);
$uzakazky->addText('dva', 'U zakázky:')->setValue($polozka->uzakazky);
?>
a výsledek je stejný.
- ZETCHA
- Člen | 59
Pak asi plně nechápu funkci containeru.
Chtěl jsem aby mi vrátil z jedné skupiny položek pole a z další
skupiny položek další pole, a to teď
dělá! Proto to mám ve dvou containerech. Jen ta posloupnost položek při
vykreslování je pro tento případ nevhodná.
Pokud je jiný způsob zkus mi poradit (tápu). Formulář vytvářím přes tzv. továrničku, ale asi to dopadne na manuální vykreslení. Nebo ne?
- redhead
- Člen | 1313
Co takhle:
$skladem->addText('jedna', 'Skladem:')->setValue($polozka->skladem);
$skladem->addText('jedna', 'U zakázky:')->setValue($polozka->uzakazky);
$uzakazky->addText('dva', 'Skladem:')->setValue($polozka->skladem);
$uzakazky->addText('dva', 'U zakázky:')->setValue($polozka->uzakazky);
Nejde o pořadí volání containerů, ale o pořádí V containeru.
- ZETCHA
- Člen | 59
Zkusil sis to?
Component with name ‚jedna‘ already exists.
To je i v logice postavený na hlavu.
Potřebuji vrátit dvě pole se stejným indexem,
aby to pak pokračovalo při odesláni např. takto:
<?php
$data = $form->->getValues();
$x = 0;
while ( $x <= count($data['skladem'])-1)
{
$this->db->query('INSERT INTO pohyby', array(
'pole1' => $data['skladem'][$x],
'pole2' => $data['uzakazky'][$x]
)
$x++;
}
?>
A to můj způsob práce s containerem splňuje, jen to vykreslení je na levačku.
- Panda
- Člen | 569
Co na to zkusit jít trochu jinak?
<?php
$polozky = $form->addContainer('polozky');
$n = 0;
foreach ($data as $polozka) {
$item = $polozky->addContainer((string) (++$n));
$item->addText('skladem', 'Skladem:')->setValue($polozka->skladem);
$item->addText('uzakazky', 'U zakázky:')->setValue($polozka->uzakazky);
}
?>
<?php
$data = $form->getValues();
foreach ($data['polozky'] as $polozka) {
$this->db->query('INSERT INTO pohyby', array(
'pole1' => $polozka['skladem'],
'pole2' => $polozka['uzakazky']
));
}
?>