Po vložení textu do addProtection() chyba 500

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

Ahoj, měl jsem dnes od uživatele nahlášeno, že se někdy zobrazí u formuláře AJ text „Please submit this form again (token expire…)“.

Je to tím, že jsem měl u formuláře přidáno addProtection() bez textu…

Vložil jsem tedy text ->addProtection(‚nejaky_text‘);, ale teď u toho formuláře nastala chyba 500:

Argument 1 passed to Nette\Application\UI\Form::__construct() must implement interface Nette\ComponentModel\IContainer, string given, called in /www/projekt/xxx/release/app/presenters/ZiveakcePresenter.php on line 327 and defined search…

a byl označen řádek 26 v …/libs/Nette/Application/UI/Form.php:26

public function __construct(Nette\ComponentModel\IContainer $parent = NULL, $name = NULL)

řádek 327 (který vypisuje laděnka, je právě ten můj addProtection(‚nejaky_text‘);

Nevíte čím to mohlo být?

Díky

Editoval n.u.r.v. (9. 4. 2014 15:00)

Jiří Nápravník
Člen | 710
+
0
-

addProtection může být bez textu, v tom problém není… Nechceš sem spíše zkopírovat přímo ten kus kódu

n.u.r.v.
Člen | 485
+
0
-

Jiří Nápravník napsal(a):

addProtection může být bez textu, v tom problém není… Nechceš sem spíše zkopírovat přímo ten kus kódu

Mno ono šlo o to, že když vypršel časový limit tak se zobrazila hláška v AJ, tak jsem myslel, že když dám do addprotection český text, tak to bude ok, jenže to pak hodilo tu chybu…

Zde je generování formuláře:

protected function createComponentZalozeniForm() {
        $form = new Form();
        $form->addProtection('Platnost formuláře vypršela, prosím odešlete formulář znovu.');
        $form->addHidden('token_2');
        $form->getElementPrototype()->name = 'fmAction';
        $form->addText('actionTitle', '')
                ->addRule(Form::MAX_LENGTH, 'Název muže obsahovat maximálně %d znaků.', $this->context->parameters['countTitleMax'])
                ->setRequired('Musíte vyplnit název!')
                ->setAttribute('placeholder', 'Název');
        $form->addSubmit('next', 'Následující krok >')
                ->setAttribute('class', 'btn');
        $form->addHidden('action', '');
        $form->addHidden('cf', $this->getUser()->getIdentity()->CF);
        $form->onSuccess[] = $this->Pridej_krok_1_Submitted;

        return $form;
    }

Edit: Tak jsem z toho blázen- na localu mi to jde…zkusím to znovu nasadit na hosting…

Editoval n.u.r.v. (9. 4. 2014 15:19)

Jiří Nápravník
Člen | 710
+
0
-

Nemenil jsi nastavení sessions? Například cookie_domain či pod.? To takhle blbne casto, resenim je procistit cache prohlizece, nebo anonymni okno…

n.u.r.v.
Člen | 485
+
0
-

no zkusil jsem toto:

  1. dál jsem ten text v addProtection i k přihlašovacímu formuláři
  2. načetl jsem si přihlašovací stránku
  3. smazal cache prohlížeče (tedy včetně session id)
  4. zkusil jsem odeslat formulář – zobrazila se správně ta moje hláška že vypršela platnost formuláře
  5. další přihlášení šlo…


ok, po přihlášení jsem vlezl do sekce kde byl ten problém – je to jeden presenter se třema formulářema…

  1. první formulář (první krok) se zobrazil bez problému, ale při odeslání kdy se měl zobrazit druhý form., nastala ta chyba…

ale dnes jsem to nasadil znovu a smazal obsah složky temp a zatím bez chyb…