formulář v jiném souboru než je jeho presenter
- Šaman
- Člen | 2664
Ahoj, snažim se odtrhnout už odladěný formlulář od mateřského
presenteru (kvůli přehlednosti). Ale ve chvíli, kdy ho odtrhnu, přijdu
o vazbu (v komponentě už proměnná $this
neoznačuje presenter
a jeho data). Jde mi hlavně o obsluhu tlačítek.
I když vytvořím nový presenter jako potomka původního (máme přístup
k datům), tak při vykreslování v šabloně mi to hlásí
Component with name '...' does not exist.
Je mi jasné, že
v původním presenteru už neexituje, ale nevím jak z toho ven..
Nechci z formuláře dělat automonmí komponentu (form je závislý na proměnných presenteru). Můžete mě někdo nakopnout, pls?
// Pozn: Samozřejmě používám továrničku.
Editoval Šaman (31. 3. 2010 15:53)
- Filip Procházka
- Moderator | 4668
udělej z něj komponentu a používej
$this->getParent()->getParam('wtf');
a nebo
popř. $this->getPresenter()->getParam('wtf');
- Honza Marek
- Člen | 1664
Presenter:
protected function createComponentOdtrzenejForm() {
return new OdtrzenejForm;
}
Formulář (poděděná třída OdtrzenejForm):
<?php
class OdtrzenejForm extends AppForm {
public function __construct(IComponentContainer $parent = null, $name = null) {
parent::__construnct($parent, $name);
$this->addText("blabla", "blabla");
//...
$this->addSubmit("ok", "Ok")->onClick[] = array($this, "odeslat");
}
public function odeslat(SubmitButton $btn) {
$values = $btn->form->values; // nebo $this->values
NejakejModel::ulozit($values);
$this->presenter->flashMessage("Všechno OK");
$this->presenter->redirect("default");
}
}
?>
Editoval Honza Marek (7. 4. 2010 12:27)
- Šaman
- Člen | 2664
Ahoj, o tu komponentu se snažím, ale zatím bezvýsledně – nemáte
někdo zpracovaný obyčejný formulář jako komponentu, pls? Našel jsem na
fóru ‚tohle‘:https://forum.nette.org/…o-komponenta
ale na metodě render()
mi to hlásí
Component name must be integer or string, NULL given.
A stránka
v QuickStartu tvoříme komponentu neexistuje. Případně sepsat krátký
postup na to, jak z komponenty v továrničce v presenteru (na to je návodů
spousta) vytvořit komponentu v samostatné třídě. Díky.
- Šaman
- Člen | 2664
Super, s OdtrhnutymFormem jsem se dostal zatím nejdál. Samotný formulář
se mi vykreslí, šablonu nastavuji pomocí
{include 'formKrok1.phtml', form => $presenter['kalkulatorKrok1Form']}
,
tj. stejně jako když byl součástí presenteru, ale při volání
$defaults = $this->presenter->data->getData(..);
mi
vyběhne hláška: Component '' is not attached to 'Presenter'.
Nevadí, že celá definice formuláře i s načítáním
$defaults
je v __constructoru
?
Editoval Šaman (7. 4. 2010 14:11)