Replicator přidání do 2 kontejnerů
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Neishon
- Člen | 3
Ahoj,
dělám web pro jednu dopravní společnost a chtějí tam mít formulář pro
zadání poptávky. V poptávce může být více druhů nákladu, který se
může naložit i vyložit na více místech. Vytvořil jsem proto formulář
pomocí replicatoru. Zde je kód:
public function createComponentPoptavka(){
$firma = $this->context->firma->jmenaFirem();
$dispecer = $this->context->uzivatele->ziskejPodleRole('dispecer')->fetchPairs('id', 'celeJmeno');
$form = new UI\Form;
$form->addSelect('firma', 'Firma', $firma);
$form->addSelect('dispecer', 'Dispečer', $dispecer);
$form->addTextArea('poznamka', 'Poznámka', 70, 3);
$naklad = $form->addDynamic('naklad', function (Container $container){
$container->currentGroup = $container->form->addGroup('Přepravovaný náklad', FALSE);
$container->addText('nazev', 'Název nákladu');
$container->addSelect('baleni', 'Druh balení', array('Paleta'));
$container->addText('x', 'd')->setAttribute('class', 'small');
$container->addText('y', 'š')->setAttribute('class', 'small');
$container->addText('z', 'v')->setAttribute('class', 'small');
$container->addText('hmotnost', 'Max. hmotnost');
$container->addCheckBox('stohovatelnost', 'Stohovatelnost');
$container->addCheckBox('nebezpecny', 'Nebezpečný náklad');
$container->addTextArea('poznamka', 'Poznámka', 70, 3);
}, 1);
$naklad->addSubmit('add', 'Přidat náklad')->
addCreateOnClick(TRUE);
$nakladka = $form->addDynamic('nakladka', function (Container $container){
$container->currentGroup = $container->form->addGroup('Místo nakládky', FALSE);
$container->addText('spolecnost', 'Společnost');
$container->addText('ulice', 'Ulice');
$container->addText('mesto', 'Město');
$container->addText('psc', 'PSČ');
$container->addSelect('stat', 'Stát', array('a', 'b'));
$container->addText('ks', 'Ks naložit');
$container->addTextArea('poznamka', 'Poznámka', 70, 3);
$container->addDatePicker('datumOd', 'Datum od');
$container->addDatePicker('datumDo', 'Datum do');
$container->addSubmit('remove', 'Smazat')
->addRemoveOnClick()->setAttribute('class', 'delete');
}, 1);
$nakladka->addSubmit('add', 'Přidat místo nakládky')
->addCreateOnClick(TRUE);
$vykladka = $form->addDynamic('vykladka', function (Container $container){
$container->currentGroup = $container->form->addGroup('Místo vykládky', FALSE);
$container->addText('spolecnost', 'Společnost');
$container->addText('ulice', 'Ulice');
$container->addText('mesto', 'Město');
$container->addText('psc', 'PSČ');
$container->addSelect('stat', 'Stát', array('Česká republika', 'Slovenská republika'));
$container->addText('ks', 'Ks naložit');
$container->addTextArea('poznamka', 'Poznámka', 70, 3);
$container->addDatePicker('datumOd', 'Datum od');
$container->addDatePicker('datumDo', 'Datum do');
$container->addSubmit('remove', 'Smazat')
->addRemoveOnClick()->setAttribute('class', 'delete');
}, 1);
$vykladka->addSubmit('add', 'Přidat místo vykládky')
->addCreateOnClick(TRUE);
$form->addSubmit('send', 'Zpracovat')
->onClick[] = callback($this, 'MyFormSubmitted');
$form->addSubmit('odeslat', 'Odeslat');
$form->onSuccess[] = callback($this, 'novaPoptavkaSubmitted');
return $form;
Celý kód funguje dobře, ale potřeboval bych, aby se při přidání
nového nákladu vytvořil i nový input u nakládky a vykládky pro určení
počtu kusů.
Zkoušel jsem nahradit řádek
$container->addText('ks', 'Ks naložit');
za
$kusu = $container->addDynamic('kusu', function (Container $kusu){
$kusu->addText('ks', 'Ks naložit');
}, 1);
, ale nevím, jak po kliknutí na tlačítko pro přidání nákladu přidat i tento input.
Je vůbec něco takového možné?
Předem děkuji za každou odpověď.