Nella/Phone input nelze zakomponovat do formuláře
- Azathoth
- Člen | 495
Zdravím,
mám problém s addonem https://componette.org/search/?…. Chci jej zakomponovat do stránek, které právě tvořím, ale bohužel se mi nedaří addon zprovoznit.
Zde je má třída PhoneNumberForm:
a zde je presenter, ve kterém formulář vytvářím:
A zde je template, kde má být formulář:
A můj problém je v tom, že Tracy hlásí Fatal error: Cannot access property Nella\Forms\Controls\PhoneNumber::$phonePrefixes
File: …\vendor\nella\forms-phone\src\Nella\Forms\Controls\PhoneNumberInput.php:395
385: * @param string 386: * @return \Nette\Utils\Html 387: * @throws \Nette\InvalidArgumentException 388: */ 389: public function getControlPart($key) 390: { 391: $name = $this->getHtmlName(); 392: 393: if ($key === static::NAME_PREFIX) { 394: $control = \Nette\Forms\Helpers::createSelectBox( 395: array_combine(static::$phonePrefixes, static::$phonePrefixes), 396: array( 397: ‚selected?‘ ⇒ $this->prefix, 398: ) 399: );
Ocením každou radu.
Editoval Azathoth (11. 8. 2014 21:05)
- David Kudera
- Člen | 455
Zkus použít jen třídu PhoneNumberInput. PhoneNumber je deprecated .
Jo a ten konstruktor zkrátit takhle:
čili odstranit parent a name. Není to doporučované a nemělo by se to používat ;-)
Editoval David Kudera (11. 8. 2014 21:11)
- Azathoth
- Člen | 495
Děkuji moc, teď to krásně funguje. Kámen úrazu byl opravdu v té deprecated třídě. Mohl bych poprosit autora, aby to změnil v té své ukázce na stránce https://componette.org/search/?… ?
A mám ještě jednu otázku: proč není doporučované mít v konstruktoru parent a name, když v https://doc.nette.org/cs/forms#… je to ukázáno jako příklad toho, jak dělat vlastní formuláře?
- David Kudera
- Člen | 455
viz třeba pár prvních odkazů
ale jinak třeba i jen kvůli praktičnosti. Je to psaní navíc, navíc Nette si tohle pořeší samo (jen o něco později a parent je dostupný až v metodě attached a ne hned v konstruktoru). Další věcí by mohla být i třeba komplikace formulářů jako komponent (ne jen formulářů, ale všech komponent registrovaných v di).
Jednoduše je to zbytečné a pokud je potřeba parent (nejčastěji nejspíš presenter), tak stačí použít attached, jako je vysvětleno tady ;-)
Edit: snad to hlavní jsem zapomněl, ale souvisí to např. s komponentami v di. Zaplníš si konstruktor a pokud ta komponenta čeká nějaké služby, tak ten konstruktor bude dost narůstat
Editoval David Kudera (11. 8. 2014 23:13)