ciste reseni pro zabraneni zobrazeni renderu

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

Zdravim,

chtel bych se zeptat, na ciste reseni meho problemu…

Mam komponentu s formularem. Tento formular mam zobrazen v renderu scanSn, zde se naskenuje seriove cislo a v metode scanFormValidate se zkontroluje jestli je vse v poradku (delka, znaky, zaznam v db)
Po kontrole v metode scanFormSuccess nastavim view na rework, ve ktere se mi nacte dalsi formular.

Abych zabranil zobrazeni renderu rework zadanim adresy do prohlizece (bez naskenovani seriove cisla), ve startup metode pres promennou snIsOk kontroluju jestli bylo seriove cislo naskenovano, pokud ne, presmeruji na render default

A otazka zni, je muj postup spravny?

<?php
  private $snIsOk = false;

  public function startup()
  {
    parent::startup();

    if(!$this->snIsOk && $this->getName()=="Pega:Rework" && $this->getAction()=="rework")
      $this->redirect("Rework:default");
  }

  protected function createComponentScanForm()
  {
    $form = new Form;
    $form->addProtection();

    .....

    $form->onValidate[] = $this->scanFormValidate;
    $form->onSuccess[]  = $this->scanFormSuccess;

    return $form;
  }

  public function scanFormValidate($form)
  {
    .....
  }

  public function scanFormSuccess($form)
  {
    $values             = $form->getValues();
    $this->template->sn = $values["sn"];
    $this->snIsOk       = true;
    $this->setView("rework");
  }
?>
Jan Endel
Člen | 1016
+
0
-

není jednoduší:

public function actionRework()
{
	if (!$this->snIsOk) {
		$this->redirect('scanSn');
	}
}

?

ali
Člen | 342
+
0
-

diky, tam me to nenapadlo