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