Page not found při odkazu na akci

mimacala
Člen | 113
+
0
-

Ahojte,
při obnově hesla zašlu na email odkaz pomocí funkce ObnovitOk.
Odkaz v sobě nese klíč a email uživatele, odkazuje na actionKontrola kde kontroluji zda je klíč v pořádku, ale pak už se mi nezobrazí form v šabloně default.latte, která je součástí presenteru kde je actionKontrola.
Hodí mi to hlášku page not found :/

Moc děkuji za vysvětlení, vůbec nevím co přehlížím nebo si neuvědomuji.

   public function actionKontrola($klic,$email){
         $db = $this->uzivatele->DataKde("email", $email)->fetch();
         if(!$db->obnova == $klic)
         {
             $this->flashMessage("Nevalidní klíč", "error");
             $this->redirect("Homepage:");
         }

      $this->obnEmail = $email;

    }

    public function renderDefault(){

    }

    public function createComponentReset()
    {
        $form = new Form;
        $form->addPassword('reset');
        $form->addSubmit('obnovit');
        $form->onSuccess[] = [$this, 'ResetOk'];

     return $form;
    }

     public function ResetOk(Form $form,$data): void
    {

         $passwords = new Passwords(PASSWORD_BCRYPT, ['cost' => 12]);
        $res = $passwords->hash($data->password);

         $upravheslo = $this->uzivatele->DataKde("email", $this->obnEmail)->update("heslo", $res);
         if($upravheslo)
         {
             $this->flashMessage("Heslo bylo úspěšně nastaveno", "success");
             $this->redirect("Prihlaseni:prihlasit");
         }


     }

tady generuji link

public function ObnovitOk(Form $form,$data): void
    {
         $db = $this->uzivatele->Data()->fetchAll();

         foreach ($db as $dbklic)
         {
             if($data->email == $dbklic->email)
             {


               $klic = rand(1001, 100000);

               $url = $this->link("//Reset:kontrola", $klic, $data->email);

               $odeslat = $this->smsmodel->OdeslatEmail("obnova účtu - <info@test.cz>", $data->email, "Obnova účtu [test]", $url);


                   $nastav = $this->uzivatele->DataKde("email", $data->email)->update([ "obnova" => $klic ]);
                    $this->flashMessage("Na email byl zaslán link pro obnovu hesla", "success");
                     $this->redirect("Homepage:");

             } else{
                 $this->flashMessage("Email neexistuje", "error");
                 $this->redirect("Homepage:");
             }
         }
     }
m.brecher
Generous Backer | 726
+
+1
-

@mimacala Ahoj, je to tedy tak, že odešleš email s odkazem a po kliknutí na odkaz v emailu se zobrazí v prohlížeči „Page not found“ ? Pošli url které se objeví po kliknutí na ten odkaz a kód jak máš udělané routy.

nightfish
Člen | 470
+
+1
-

@mimacala Když máš actionKontrola(), hledá se standardně šablona kontrola.latte. Takže buď v actionKontrola() volej $this->setView('default'); – tím se ti zajistí vykreslení šablony default.latte a nebo actionKontrola() přejmenuj na actionDefault() – s tím, že bude potřeba ještě upravit generování odkazu (Reset:default).

mimacala
Člen | 113
+
0
-

@m.brecher , @nightfish
Moc děkuji za rychlou aktivitu, problém byl v tom že actionKontrola volá na kontrola.latte, ale já měl default.latte, tak jsem to přejmenoval a bylo vyřešeno.

Myslel jsem totiž, že to bude vždycky volat na default pokud to vyloženě nezměním :)