request->GetPost = null zatial co $_POST != null

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

Potrebujem v presenteri podporovat data posielane GET aj POST metodou. Chcel som to spravit takto:

<?php
// Inside some presenter method
$values = array_merge($this->request->getParameters(), $this->request->getPost());
?>

Vsimol som si ale, ze vo vysledku sa nenachadzaju ziadne POST data, tak som to otestoval:

<?php
// Inside some presenter method, again
print_r($this->request->getPost());
print_r($_POST);
?>

Preco mi getPost() vracia null, zatial co $_POST mi vrati data?

PS: Data som na stranku poslal na rychlo vytvorenym formularom cez firebug priamo v prehliadaci, nevytvaral som formular ako komponentu (to vsak hadam nie je problem :) )

vvoody
Člen | 910
+
0
-

pre GET volaj nad presenterom getParameter
pre POST by bolo najslušnejšie vytvoriť Nette\Forms\Form

buksy
Člen | 22
+
0
-

A ked dostavam data z ineho webu alebo z mobilnej aplikacie? Nemam tam moznost vytvorit Nette formular a jednoducho dostavam len vysledok po odoslani formulara. Ako spracujem taketo data cez Nette? (alebo je zbytocne to vyzadovat od nette? Dochadza tam este k nejakej uprave dat, escapovanie alebo nieco?)

jiri.pudil
Nette Blogger | 1032
+
0
-

Surová data ($_POST) jsou v Nette\Http\Request::getPost(), nikoliv Nette\Application\Request::getPost().

enumag
Člen | 2118
+
0
-

@jiri.pudil: To záleží na použitém Routeru, ale Nettí Route to kopíruje. Takže nejspíše používá nějaký vlastní router který post data zahodí.

buksy
Člen | 22
+
0
-

Ano, pozuivam vlastny router, ako do neho pridam to aby „nezahadzoval“ POST data?

Ma vlastne nejaky zmysel z hladiska bezpecnosti preferovat Nette\Http\Request::getPost() oproti $_POST ?

enumag
Člen | 2118
+
0
-

@buksy:

Tvůj router na vstupu dostane Nette\Http\Request a má za úkol vytvořit instanci Nette\Application\Request. Stačí jen předat post parametry z prvního tomu druhému, úplně stejně jako to dělá Nettí router (očekával jsem že tohle ti dojde už z mého odkazu výše – ze zdrojáku Nette je to naprosto zřejmé).

Pokud jde o $_POST tak Nette při vytváření Http\Requestu používá docela šílenou logiku, takže bych osobně raději používal ten Nettí.

David Matějka
Moderator | 6445
+
0
-

pridas to tam presne tak, jak je to v tom Nettim Route (viz odkaz od @enumag)

rozdil je asi takovejhle

EDIT: no tak pozde :)

Editoval matej21 (24. 9. 2013 22:45)