addDynamic validace a vykreslování
- esorimer
- Člen | 114
Zdravím,
zkouším použít rozšíření "":https://componette.org/search/?…
Mám s tím 2 problémy:
- Pokud chci přidat novou dynamickou položku, tak se mi (už ajaxem) validují ostatní pole formuláře. Píšou o tom už další uživatelé v diskuzi pod rozšířením, ale není tam žádné info o tom, jak to vyřešit :(
- Pokud přidám podle návodu tlačítko na vytvoření nového dynamického containeru, zobrazí se mi při vykreslování až na konci formáře (až za tlačítkem odeslat):
<?php
public function createComponentorm($name) {
$form = $this->createForm();
$form->addGroup('Editace');
$form->addText('book_name', 'Název:')->addRule(Form::FILLED)->addCondition(Form::MAX_LENGTH, 255);
$authors = $form->addDynamic('author', function (Container $author) {
$author->addText('name','Jméno autora:');
$author->addText('surname','Příjmení autora:');
$author->addSubmit('remove', 'Smazat')->addRemoveOnClick();
}, 1, TRUE);
$authors->addSubmit('add', 'Přidat autora')->addCreateOnClick();
$form->addSubmit('Odeslat');
return $form;
}
?>
Výsledkem je, že se nejdřív vykreslí input pro Název, pak inputy pro jméno a příjmení autora s tlačítkem na smazání, pak tlačítko Odeslat a až pak tlačítko „Přidat autora“.
Pokud ostraním $form->addGroup(‚Editace‘);, tak se sice zobrazí tlačítka ve správném pořadí (Smazat, Přidat autora, Odeslat), ale všechny na jednom řádku.
Nevíte náhodou někdo co s tím?
- Richard Faila
- Člen | 40
Pokud si dobře pamatuji, tak je třeba mít u dynamického formuláře něco jako
<?php
$authors->addSubmit('add', 'Přidat autora')
->setValidationScope(FALSE) //zabrání validaci při stisku tlačítka
->addCreateOnClick();
$form->addSubmit('Odeslat')
->onClick[] = $this->processForm; // odeslat formulář pouze při stisku tohoto tlačítka
?>
Je třeba smazat $form->onSuccess[] = $this->processForm;
pokud tam něco takového máš.
Co se týče pořadí tlačítek, tak já používám manuální vykreslování, takže podobné problémy nemám.
- sKopheK
- Člen | 207
Nette 2.1. Nejde mi vypnout validace. V callbacku u
addDynamic()
mám:
$round->addSubmit('remove', "-")
->setAttribute('class', 'btn btn-danger ajax')
->setValidationScope(FALSE)
->addRemoveOnClick($invalidateCallback);
Pro celý kontejner:
$rounds->addSubmit('add', "+")
->addCreateOnClick($invalidateCallback)
->setValidationScope(FALSE)
->setAttribute('class', 'ajax btn btn-info');
A stejně to po kliknutí zařve. Nějaký nápad?