Zanořený multiplier v dalším multiplieru

Dvory59
Člen | 40
+
0
-

Ahoj. Mám problém se zanořeným multiplierem v multiplieru.

V presenteru mám

public function createComponentExpeditionForm()
	{
		$form = new Form();......
		/** @var \WebChemistry\Forms\Controls\Multiplier $multiplier */

		$multiplier = $form->addMultiplier('multiplier', function (Nette\Forms\Container $container, Nette\Forms\Form $form) {
			$container->addText('value1', 'Value 1');

			$multiplier_second = $form->addMultiplier('multiplier2', function (Nette\Forms\Container $container, Nette\Forms\Form $form) {

				$container->addText('value2	', 'Value 2');
			}, 1);

			$multiplier_second->addCreateButton('Přidat položku 1');
		}, 1);

		$multiplier->addCreateButton('Přidat položku 2');
		.....
		return $form;

	}

a v šabloně pak

				<div class="sources-online" n:multiplier="multiplier">
					{input value1}
						<div class="sources-online" n:multiplier="multiplier2">
							{input value2}
						</div>
						{btnCreate multiplier2}
				</div>
					{btnCreate multiplier}

Když mám pouze 1 multiplier, je to v pohodě a formulář funguje jak má.
Ale při přidání druhého multiplieru se začne vypisovat hláška, že Component with name ‚multiplier2‘ does not exist.

Poradíte prosím, jak tento problém vyřešit? Nebo jakým způsobem vyřešit zanořený multiplier?

jAkErCZ
Člen | 321
+
0
-

Jelikož componenta multiplier2 neexistuje jelikož ji nemáš vytvořenou… CO je účel chceš je mít na sobě závislé? Že pokud nevybereš jeden tak se nepovolí druhý? Nebo na co to chceš?

David Matějka
Moderator | 6445
+
0
-

zkusil bych {btnCreate multiplier-multiplier2}

Martk
Člen | 651
+
0
-

Teď asi takhle:

<div class="sources-online" n:multiplier="multiplier">
	{var $parent = $formContainer}
    {input value1}
        <div class="sources-online" n:multiplier="multiplier2">
            {input value2}
        </div>
        {btnCreate $parent[multiplier2]}
</div>
    {btnCreate multiplier}

Na ty makra se musím ještě podívat a napsat to lépe.

Dvory59
Člen | 40
+
0
-

@Martk , @DavidMatějka zkoušel jsem obě dvě možnosti a bohužel ani jedna nefunguje :/

Potřeboval bych, aby to bylo na sobě závislé. Aby když vyplním value1, měl uživatel možnost přidat k value1 další „pod“ hodnoty value2. A na výstupu pak dostat vnořené pole

Martk
Člen | 651
+
+1
-

@Dvory59 Ten tvůj latte kód funguje jak má, jen máš chybu v php kódu

$multiplier_second = $form->addMultiplier('multiplier2', function (Nette\Forms\Container $container, Nette\Forms\Form $form) {
	$container->addText('value2 ', 'Value 2');
}, 1);

Z $form na $container, protože to přidáváš k tomu containeru:

$multiplier_second = $container->addMultiplier(...