Vymazaná hodnota u prompt

Zdeno1981
Člen | 115
+
0
-

Zdravím,

narazil jsem na problém, že se mi vymaže nastavená hodnota u setPrompt(‚…‘) formuláře.
Našel jsem diskuzi, že to už taky někdo řešil ale zřejmě se to nevyřešilo, viz https://github.com/…e/issues/316
Netuší někdo co by to mohlo způsobovat?

Mám továrničku, kterou volám na různých místech a následně do selectBoxu přes setItems překresuluji data podle potřebných parametrů, takže pokažde jsou jiné a když zobrazím formulář, tak ten prompt tam sice je, ale je prázdný…

	public function factory(): Form
	{
		$form = new Form;
		....
		$form->addSelect('note_id', 'I know about production', [])
			->setPrompt('Select note');

		$form->onAnchor[] = function () use ($form) {
			.....
			$this->setNotes($form, $result_id);
		};

		return $form;
	}


	public function setNotes(Form $form, int $result_id): void
	{
		.....
		$noteControl = $form['note_id'];
		$noteControl->setItems($notes);
	}

Editoval Zdeno1981 (24. 11. 2023 9:04)

nightfish
Člen | 518
+
+2
-

@Zdeno1981 Buď použij Xdebug, nebo si dumpni $this->prompt někde kolem tohoto místa + zjisti (opět Xdebugem nebo dumpem), v jakém pořadí se ti volají metody setItems(), setPrompt() a getControl() na SelectBoxu. Není tam žádná magie, takže když zavoláš setPrompt() a setItems() před getControl(), tak nevidím důvod, aby to nefungovalo.

Zdeno1981
Člen | 115
+
+4
-

ok, díky. Nakonec jsem zjistil, že jsem volal 2× setItems a ten druhý mi tam vkládál prázdný string '' jako klíč, takže tím mi přepsal ten prompt… :/

David Grudl
Nette Core | 8228
+
+1
-

@Zdeno1981 tohle by už měly formuláře od verze 3.2.2 řešit