fatal error při změně třídy
- Hafran
- Člen | 121
Zdravím,
mám tlačítko cancel v normálním formuláři, které jsem udělal doslova
dle návodu zde na webu:
$presenter = $this;
$form->addSubmit('cancel', 'Cancel')
->setValidationScope(FALSE)
->onClick[] = function () use ($presenter) {
$presenter->redirect('default');
};
všechno funguje jak má. Když ale přidám řádek o změně třídy tlačítka, aby mi to udělalo grafiku z bootstrapu:
$presenter = $this;
$form->addSubmit('cancel', 'Cancel')
->setValidationScope(FALSE)
->getControlPrototype()->class("btn primary")
->onClick[] = function () use ($presenter) {
$presenter->redirect('default');
};
dostávám tenhle error, který mi ani nevyhodí Laděnku:
Fatal error: Method Nette\Utils\Html::__toString() must not throw an exception in /mnt/data/accounts/h/Nette/nette.min.php on line 4299
- llook
- Člen | 407
getControlPrototype
nevrací ten $form
jako některé ostatní metody, ale objekt
reprezentující jeho HTML element. To samé potom ten class.
Zkrátka ten ->onClick
se pokoušíš volat nad jiným objektem,
než bys chtěl. Zkus to nějak takhle:
$presenter = $this;
$cancelButton = $form->addSubmit('cancel', 'Cancel');
$cancelButton->setValidationScope(FALSE);
$cancelButton->getControlPrototype()->class("btn primary");
$cancelButton->onClick[] = function () use ($presenter) {
$presenter->redirect('default');
};
- bojovyletoun
- Člen | 667
Pro zajímavost, bez Debuggeru to háže jinou chybu (což lokalizuje chybu
přesněji):
Catchable fatal error: Object of class Closure could not be converted to string in ...Html.php
vs
Fatal error: Method Nette\Utils\Html::__toString() must not throw an exception in ...