problem pri kontrole formulare

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vosy
Člen | 532
+
0
-

Hoj mam tento presenter

function renderNew()
    {
        parent::renderDefault();

        $this->template->nadpisSekce = 'Přidat stránku';

        $this->typesOfPages = $this->PagesRepository->types()
                                ->fetchPairs('id', 'nazev');

        $this->parentsOfPage = $this->PagesService->parents();
        echo 'D';
    }


    /* FACTORIES */
    function createComponentNewPageForm()
    {
        print_r('S');
        $fData = array('presenter'=>$this,
                        'defaultNameOfPage'=>$this->infoPage['nazev'],
                        'defaultTypeOfPage'=>$this->infoPage['typeOfPage'],
                        'typesOfPages'=>$this->typesOfPages,
                        'parentsOfPage'=>$this->parentsOfPage);

        $form = $this->PagesFormFactory->newForm($fData);

        return $form;
    }

kdy vlezu na stranku s timto presenterem tak se mi nejdrive provede renderNew() a az pak createComponentNewPageForm() tazke ziskam promenne $this->typesOfPages a $this->parentsOfPage ale kdyz provedu submit formulare tak se provede nejdrive createComponentNewPageForm() a az pak renderNew() takze se mi do formulare nedostanou pole $this->typesOfPages a $this->parentsOfPage.

enumag
Člen | 2118
+
0
-

Signál (odeslání formuláře) se volá před metodou render*, ale po action*. Komponenta (formulář) se vytváří až když je třeba – před odesláním až během vykreslování, po odeslání při zpracování toho signálu. Nastuduj si životní cyklus presenteru, je to jedna z nejdůležitějších částí dokumentace. Řešení aktuálního problému uvádím níže.

function actionNew()
    {
        $this->typesOfPages = $this->PagesRepository->types()
                                ->fetchPairs('id', 'nazev');
        $this->parentsOfPage = $this->PagesService->parents();
    }
function renderNew()
    {
        parent::renderDefault();
        $this->template->nadpisSekce = 'Přidat stránku';
        echo 'D';
    }