redrawControl na formulář nefunguje?
- sevca79
- Člen | 55
Ahoj,
zdá se mi to nesmysl, ale mám něco plus mínus následujícího
formulář
class MyForm extends \Nette\Application\UI\Form {
public function __construct() {
parent::__construct();
}
public function create() {
.......
return $this
}
}
který v presenteru injectuju a creatnu,
ale když ho chci redrawnout v nějakým handleru, tak mi to to háží
chybovou hlášku
Call to undefined method App\Forms\MyForm::redrawControl().
/** @var \App\Forms\MyForm @inject */
public $myForm;
.......
public function createComponentMyForm() {
$form= $this->myForm->create();
return $form;
}
public function handleNeco() {
if ($this->isAjax()) {
$this['myGrid']->redrawControl();
$this['myForm']->redrawControl();
}
}
v šabloně samozřejmě controly mám
{control myForm}
{control myGrid}
u myGridu je vše v pořádku…jak mám v tom handleru ten myForm aktualizovat…házet před to snippet se mi nechce, protože to je v různých includovaných šablonách a musel bych tam dávat snippetArea, který by mě redrawnul i ostatní komponenty
co tam dělám špatně? resp. co mi tam prosím chybí??
děkuji za nějakou radu
Editoval sevca79 (24. 10. 2017 14:39)
- David Matějka
- Moderator | 6445
ahoj,
- budes muset pouzit snippet, bez nej snippety nejdou
- tvuj zpusob, jak vytvaris a pracujes s formularem je ponekud nestastny
- rozhodne bys nemel registrovat formular jako sluzbu
- metoda create je zbytecna, kdyz vracis this
- a ani neni doporucene od formulare dedit
- bude lepsi, kdyz si napises factory na formular nebo udelas formular jako komponentu. jak na to, najdes treba https://doc.nette.org/…s/form-reuse a na spoustu dalsich mistech, kdyz budes hledat :) kdyz to udelas jako komponentu, tak pote ti bude stacit mit ten snippet v te komponente
- vladimir.biro
- Člen | 163
David Matějka napsal(a):
ahoj,
- budes muset pouzit snippet, bez nej snippety nejdou
- tvuj zpusob, jak vytvaris a pracujes s formularem je ponekud nestastny
- rozhodne bys nemel registrovat formular jako sluzbu
- metoda create je zbytecna, kdyz vracis this
- a ani neni doporucene od formulare dedit
- bude lepsi, kdyz si napises factory na formular nebo udelas formular jako komponentu. jak na to, najdes treba https://doc.nette.org/…s/form-reuse a na spoustu dalsich mistech, kdyz budes hledat :) kdyz to udelas jako komponentu, tak pote ti bude stacit mit ten snippet v te komponente
Mohol by som sa opytat, preco nie je dobre registrovat formular ako sluzbu a preco nie je odporucene dedit od formulara? Dakujem.
- David Matějka
- Moderator | 6445
Mohol by som sa opytat, preco nie je dobre registrovat formular ako sluzbu
neni dobre registrovat zadnou komponentu jako sluzbu, mimojine proto, ze bys ji pak nemohl pouzit na strance vicekrat, jelikoz muze byt pripojena pouze k jednomu rodici. a principialne neni komponenta sluzba. jako sluzbu bys mel registrovat pouze tovarnu na komponentu
a preco nie je odporucene dedit od formulara? Dakujem.
to je jeste obecnejsi problem z oop, viz napriklad composition over inheritance na wiki. ve zkratce: s dedicnosti prichazis o flexibilutu, jelikoz mas kodem urcenou hierarchii trid