Nastavení defaultních hodnot do webchemistry/forms-multiplier

- Proki
 - Člen | 66
 
Ahoj,
používám webchemistry/forms-multiplier a chtěl bych mít i editační formulář udělaný stejným principem, jak pro nové záznamy, respektive mám jeden form jak klasické formuláře a v akci pro editaci nastavuji existující hodnoty metodou setDefaults.
Problém je, že Multiplier tyto defaultní hodnoty vůbec nebere v potaz a navíc vytvoří pouze jeden kontejner, nikoliv určitý počet dle počtu položek, které předávám do setDefaults. Nemáte někdo podobný problém? Případně jak nastavujete výchozí hodnoty do Multiplieru?
Díky

- Mart78
 - Člen | 31
 
<?php
namespace App\Presenters;
use Nette;
use Nette\Application\UI\Form;
class TestPresenter extends BasePresenter
{
	protected $multiplierValues = [];
	public function actionEdit($id)
	{
		// some code
		$this->multiplierValues = [
			[
				'name' => 'prvni',
				'number' => 123,
			],
			[
				'name' => 'druhy',
				'number' => 456,
			],
		];
		$this['testForm']->setDefaults($formValues);
		$this->setView('add');
	}
	public function createComponentTestForm()
	{
		$form = new Form();
		$form->addText('someInput');
		$form->addText('someInput2');
		$myMultiplier = $form->addMultiplier('multipleItems', function(Nette\Forms\Container $container, Form $form){
			$container->addText('name');
			$container->addInteger('number');
		}, 0); // 0 means there is no row rendered when no values are set
		$myMultiplier->addCreateButton('Přidat');
		$myMultiplier->addRemoveButton('Smazat');
		$myMultiplier->setValues($this->multiplierValues); // here you set default values for multiplier, it will automaticly render two rows with your values
		$form->addSubmit('save');
		//$form->onSuccess[] = [$this, 'couponFormSucceeded'];
		return $form;
	}
}
				
- marten_cz
 - Člen | 10
 
@Mart78 Co s tim, kdyz ale chci setDefaults() nebo i setValues() pouzit v action? Ze zahadneho duvodu mi to tam nefunguje. V create component je vse v poradku. Pritom ostation component jsou v tomhle ohledu bez problemu, pouze tady je to nerealne. Dle xdebugu se setValue zavola a dokonce i nastavi, jen data jsou pak prazdna.

- Mart78
 - Člen | 31
 
@marten_cz Na starším projektu mi to takto funguje, na novém už
ale ne. Hodnoty je potřeba nastavit ještě před vygenerováním komponenty
formuláře. Viz. https://github.com/…ier/issues/5
Jen pozor pokud v action metodě nastavuješ hodnoty i ostatním prvkům
formuláře, musíš první nastavit hodnotu pro multiplier.
public function actionEdit()
{
	$this->formFactory->setMultiplierValues($values);
	$this['form']->setDefaults(..);
}