Vytvoření odkazu v BaseControl

MikeLacroix
Člen | 60
+
0
-

Zdravím,

vytvořil jsem si vlastní Form:

class Form extends \Nette\Application\UI\Form
{
	public function addWysiwyg($name, $label = null)
	{
		$textarea = new Controls\Wysiwyg($label);
		return $this[$name] = $textarea;
	}
}

a vlastní control Wysiwyg:

class Wysiwyg extends \Nette\Forms\Controls\TextArea
{
	public function __construct($label = null)
	{
		parent::__construct($label);
		$this->getControlPrototype()->addAttributes([
			'class' => 'wysiwyg',
			'data-uploader' => $this->link(':Admin:WysiwygUploader:upload'), // tady je problém
		]);
	}

Mám však problém s vytvořením adresy v atributu „data-uploader“. Jak vytvořit link na presenter uploadující obrázky z wysiwygu? Nebo případně mám to řešit nějak úplně jinak?

David Matějka
Moderator | 6445
+
+3
-

Ahoj, většinou je lepší přístup tam tu URL posílat jako parametr, pak zlepšíš znovupoužitelnost a přenositelnost té komponenty.

Ale pokud bys to chtěl řešit, tak je potřeba link generovat na presenteru. k tomu se v tom form controlu dostaneš až ve chvíli, kdy je zapojen do stromu komponent. nabízejí se dvě možnosti:

  1. v nějaké metodě, která buildí ten formulářový prvek (getControl) zavoláš $this->lookup(Nette\Application\UI\Presenter::class)->link(...)
  2. využiješ monitor & attached funkčnost component modelu, příklad můžeš najít na ui\component
MikeLacroix
Člen | 60
+
0
-

paráda, díky moc