formulář, proměnný počet polí? jak na ně
- malkol
- Člen | 133
dobře pročetl jsem si to, a asi jsem pochopil jak to funguje …ale ihned po tom co jsem to začal zkoušet jsem zadrhnul …
pro mě jakožto začátečníka je to celkem neprůhledné … vím jen že Kdyby\Replicator\Container neni v cash bootloaderu … což si myslím že by být měl, …
jel jsem podle návodu a zasekl jsem se ihned u řádky
kam má ta řádka přijít? a neměl bych tu třídu nejdríve videt v cash
toho loaderu ? :-)
Kdyby\Replicator\Container::register();
předpokladam, že hlásí že nezná tuhle funkci je potom pochopitelné
Nette\Application\UI\Form::addDynamic().
- Oli
- Člen | 1215
Je potřeba to nainstalovat pomocí composeru (možná promazat cache). Potom
vložit ten řádek Kdyby\Replicator\Container::register();
třeba
do bootstrap souboru. Pak už jen ve třídě, kde je formulář
zavolat tohle:
use Nette\Forms\Container;
$form->addDynamic('dates', function (Container $container) {
$container->addText('date');
});
Pokud to bude fungovat, je vše v pořádku. Pokud ne, někde je chyba.
PS. díky tomu řádku s register() se to přidá do DI a je to napojený na aplikaci.
- malkol
- Člen | 133
výborně .. to se mi podařilo … a jak dostanu prosím pěkně nějakou
proměnnou dovnitř
napříkald ten $mujText ?
jediná teorie která mě napadá je napsat Container ?
nebo ?
$dyn= $formPoznamka->addDynamic('dates', function (Container $container) {
$container->addTextArea('text',$mujText);
});
EDIT: samozřejmě .. jak jinak
$users = $form->addDynamic('users', function (Container $user) use ($removeEvent) {
// ...
$user->addSubmit('remove', 'Remove')
->setValidationScope(FALSE) # disables validation
->onClick[] = $removeEvent;
}, 1);
Editoval malkol (8. 11. 2014 21:53)
- malkol
- Člen | 133
dobrá .. ale takhle dostanu ty proměnné do toho Dynamic …
$dyn= $formPoznamka->addDynamic('dates', function (Container $container) use ($mujText,$id){
$container->addTextArea('text',$mujText);
$container->addTextArea('id',$id);
});
ale co když chci každou jednotlivou kompomentu v té Dynamic vytovrit s jinými parametry ?
pravděpodobně by bylo dobré kdyby to nejak vstupovalo do …
$dyn->createOne();
- BigCharlie
- Člen | 283
úplně nerozumím, na co se ptáš. Předpokládám, že chceš do té své textarey dostat obsah nějaké proměnné? Pak nějak takhle:
public function createComponentMujForm() {
$form = ...
...
$form->addDynamic('notes', function (Container $container) {
$container->addTextArea('note',$mujText);
})
...
}
public function renderDefault() { // podle toho, jak se jmenuje příslušné view
...
if (!$this['mujForm']->isSubmitted()) {
foreach ($myDatabaseNotes as $note) { // jména polí si uprav podle reality
$this['mujForm-notes'][$note->id]->setValues([
'note' => $note->content,
]);
}
}
...
}
Doufám, že tam není nějaká bota, píšu to z hlavy.
- malkol
- Člen | 133
funguje to pěkně … ale jak říkám .. je to strašně neprůhledné, a dokumentace k tomu nikde pořádně není … tak se to blbě pochopuje ;)
ještě otázečku .. jak bych se dostal ne k hodnotám těch polí … ale k těm labelům které je uvozují z toho renderu ?
k tomu co se nastavuje jako druhý parametr
$container->addTextArea(‚text‘,„popisek“);