Error při používání $this->redirect(‚Homepage:default‘);

- Colorek
- Člen | 2
Ahoj,
na předešlých stránkách, které jsem dělal šlo vše naprosto bez
problémů a $this->redirect(‚kamkoli:kamkoli‘); fungovalo naprosto
dobře, ale najednou, když jsem založil úplně nové stránky naskakuje tento
error. Můžete mi někdo prosím poradit?
Obrázek erroru: https://i.ibb.co/…Untitled.png;
<?php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
final class FormPresenter extends Nette\Application\UI\Presenter
{
private $errors = array();
function __construct(Nette\Http\Request $http)
{
if ($http->isMethod("POST")) {
$username = htmlspecialchars($http->getPost('username'));
$email = htmlspecialchars($http->getPost('email'));
$password = htmlspecialchars($http->getPost('password'));
$rePassword = htmlspecialchars($http->getPost('re-password'));
//CHECK USERNAME
if (!ctype_alnum($username)) {
array_push($this->errors, 'Your username is not valid!');
}
//CHECK EMAIL
if (!filter_var($email,FILTER_VALIDATE_EMAIL)) {
array_push($this->errors, 'Your email address is not valid!');
}
//CHECK PASSWORD
if (!$password == $rePassword) {
array_push($this->errors, 'Passwords do not match!');
}
else {
if (strlen($password) < 6) {
array_push($this->errors, 'Your password is too short! (min 6 characters)');
}
}
//INSERT TO DATABASE
if (sizeof($this->errors) == 0) {
$this->redirect('Homepage:default'); /*<----------------------------------------------------------------*/
}
}
}
function renderSignup() {
$this->template->errors = $this->errors;
}
}
- HomepagePresenter
<?php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
final class HomepagePresenter extends Nette\Application\UI\Presenter
{
function renderDefault() {
}
}

- CZechBoY
- Člen | 3608
Tyjo docela by me zajmalo k cemu tam to Nette vlastne mas :-). Slysel si uz o Nette\Forms? Nemusel bys resit nejaky flash messages, ani kontrolovat jestli to mas post pozadavek atd.
Jinak tvym problemem asi bude ze vse delas v konstruktoru. Zkus to prehodit
treba do actionDefault.
edit: opraven bullshit
Editoval CZechBoY (22. 12. 2019 14:56)

- MajklNajt
- Člen | 518
CZechBoY napsal(a):
Jinak tvym problemem asi bude ze vse delas v presenteru. Zkus to prehodit treba do
actionDefault.
iba opravím, že si asi chcel napísať „v konstruktoru“ (len aby nevznikol zmätok)
@Colorek keď sa pozrieš na riadok 779 v
Nette\Application\UI\Presenter zistíš, že sa tam snaží
použiť meno aktuálneho presenteru, ktoré v konstruktore ešte nie je
zistené, čiže stačí tú „logiku“ prehodiť do
startup().
Každopádne, ako píše CZechBoY, použi radšej formuláre (teda ak nerobíš nejaké API, ale aj na to sú pekné balíčky…)

- Marek Bartoš
- Nette Blogger | 1319
Tabulka je výchozí. V dokumentaci najdeš, jak formulář renderovat manuálně, případně jsou na githubu ukázky přenastavení renderu pro bootstrap nebo hromady rozšiřujících balíčků včetně rendererů
Editoval Mabar (22. 12. 2019 12:26)