Vlastní prvek neudrží hodnotu po úspěšném odeslání (ale ne přesměrování) formuláře

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

Ahoj,
vytvořil jsem si vlastní prvek ColorPicker, který vkládá html <input type=„color“>

<?php
...
class ColorPicker extends BaseControl
{

	/**
	 * @param  string  caption
	 */
	public function __construct($caption = NULL)
	{
		$this->monitor('Nette\Forms\Form');
		parent::__construct($caption);
		$this->control->type = 'color';
		$this->control->value = '#000000';
	}

	/**
	 * Generates control's HTML element.
	 * @param  string
	 * @return Nette\Utils\Html
	 */
	public function getControl($caption = NULL)
	{
		$this->setOption('rendered', TRUE);
		$el = clone $this->control;
		return $el->addAttributes(array(
			'name' => $this->getHtmlName()
		));
	}


	/**
	 * Returns control's value.
	 * @return mixed
	 */
	public function getValue()
	{
		return $this->value;
	}

}
?>

V registrationFormSucceeded(UI\Form $form, $values) potom zpracovávám hodnoty a generuji soubor, který předám uživateli v odkazu do flashMessage. Formulář poté nikam nepřesměruji, ale zůstávám na téže stránce. Veškeré formulářové prvky si pamatují po odeslání formuláře zadanou hodnotu, jen ColorPicker ji ztrácí.
Jak to prosím můžu opravit?

Martk
Člen | 661
+
+1
-

Musíš nastavit v html inputu hodnotu.

Řádky 93–95: https://api.nette.org/…put.php.html#…

Gwidion
Člen | 13
+
0
-

Díky! Upravil jsem to takto a funguje to:

<?php
return $el->addAttributes(array(
	'name' => $this->getHtmlName(),
	'value' => $this->getValue()
));
?>

Editoval Gwidion (7. 4. 2015 17:06)