Component '' is not attached to ‚Nette\Forms\Form‘
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mesour
- Nette Blogger | 236
Dobrý den,
mám problém s vlastní formulářovou componentou UploadPreviewControl poděděnou od UploadControl. Vyskakuje chyba Component '' is not attached to ‚Nette\Forms\Form‘, pokud chci v componentě zavolat metodu getForm.
- …/vendor/nette/nette/Nette/Forms/Controls/BaseControl.php:111 – lookup (arguments)
- …/vendor/others/App/Controls/UploadPreview/UploadPreviewControl.php:48 – getForm ()
- …/vendor/nette/nette/Nette/Forms/Controls/BaseControl.php:87 – setValue (arguments)
- …/vendor/nette/nette/Nette/Forms/Controls/UploadControl.php:28 – __construct (arguments)
- …/vendor/others/App/Controls/UploadPreview/UploadPreviewControl.php:23 – __construct (arguments)
- …/vendor/others/App/Controls/UploadPreview/UploadPreviewControl.php:35 – __construct (arguments)
Na řádce 48, kde chyba vzniká je toto:
public function setValue($value) {
$this->value = $value;
/*48:*/ dump($this->getForm());
$this->form[$this->getUidName()] = new HiddenField($this->value);
if(is_string($value))
$this->file = $value;
return $this;
}
Přikládám ještě metodu __construct, register a addUploadPreview. Pokud by bylo potřeba pošlu celý object, ale jde to pouze přes tyhle metody:
public function __construct($label = NULL) {
/*23:*/ parent::__construct($label);
}
public static function register() {
if (self::$registered)
throw new InvalidStateException(__CLASS__ . " is already registered");
\Nette\Forms\Container::extensionMethod('addUploadPreview', callback(__CLASS__, 'addUploadPreview'));
self::$registered = TRUE;
}
public static function addUploadPreview(\Nette\Application\UI\Form $form, $name, $label) {
/*35:*/ return $form[$name] = new static($label);
}
Divné také je, že pokud zavolám třeba v metodě setValue metodu $this->getName(), tak vrací NULL.
Přešel jsem z Nette 2.0 na 2.1 a přestalo to fungovat. Na Nette 2.0 tohle fungovalo. Napadá někoho, čím by to mohlo být nebo co se v tomhle změnilo od 2.0?
Díky za případné odpovědi :)