addDynamic validace a vykreslování

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

Zdravím,

zkouším použít rozšíření "":https://componette.org/search/?…

Mám s tím 2 problémy:

  1. 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 :(
  2. 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
+
0
-

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.

rumcais1
Člen | 81
+
0
-

Dá se zapnout validace na prvky replikatoru. Dejme tomu, že u prvního prvku je podmínka a při přidání dalších už podmínka není.

esorimer
Člen | 114
+
0
-

Díky, tak to nakonec taky vykresluju manuálně a setValidationScope(FALSE) pomohlo.

sKopheK
Člen | 207
+
0
-

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?