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 | 502
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 | 1280
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)