Zpracování GET a POST v Nette

Dnes tu mám návod pro hlupáky o zpracování GET a POST metod. V Nette existují v zásadě tři způsoby, jak se s tímto poprat.

1. klasicky PHPčkem $_GET[‚promena‘] nebo $_POST[‚promena‘]. Takto vytažené hodnoty však nejsou ošetření proti možným napadením.

2. nebo přes $get = $this->request->getParameters(). U POSTovaných hodnot pak přes $form->isSuccess(); někde v prezenteru, kde budete potřebovat.

3.  nebo poslední metodou, tou asi nejsprávnější lze GET zpracovat přes router, který najdete v bootstrap.php. Aby Vám to fungovalo, musíte mít v prezenteru vytvořenou funkci na kterou se v routeru necháte přesměrovat.

Příklad pro login:

Protože, odhlášení bude měnit text ohlásit/přihlásit v menu, napsal jsem si do BasePresenteru do funkce beforeRender následující:


public function beforeRender()
 {
 if(isset($_COOKIE["login"]))
 {
 $this->template->loginStatusItem = 'Odhlásit';
 $this->template->loginStatusLink = 'Login:Logout';
 }
 else {
 $this->template->loginStatusItem = 'Přihlásit';
 $this->template->loginStatusLink = 'Login:login';
 };

 }

v šabloně mám


<a n:href="{$loginStatusLink}">{$loginStatusItem}</a>

do routeru přidám pravidlo:


$container->router[] = new Route('logoff/', "Login:logout")

V prvních uvozovkách je url, které se zobrazí v aplikaci. V druhých pak prezenter:funkce, která se zavolá.

V prezenteru Login mám pak funkci


public function renderLogout()
{

... kód, který provedu pro odhlášení uživatele

};

Netvrdím, že je to 100% správně, avšak funguje to. Pokud máte někdo nějaké doplnění, sem s ním.

Jedna myšlenka na “Zpracování GET a POST v Nette”

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

This site uses Akismet to reduce spam. Learn how your comment data is processed.