proměnná $_POST[„action“] a jiné chování pod AJAX módem

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

Narazil jsem na problém s AJAX požadavkem, kdy proměnná $_POST[„action“] přetíží základní action proměnnou, což se v neajaxovém požadavku neděje. Chyba se nachází v \Application\UI\Presenter, řádek 1170. Dočasně jsem ho upravil na:

<?php
if ($this->isAjax()) {
	$postParams = $this->request->getPost();
	unset($postParams["action"]);
	$params = $postParams + $params;
}
?>

Nejsem si jist, jestli nebude problém nastávat i u dalších proménných jako „presenter“,… proto nechám opravu na někom zkušenějším.

voda
Člen | 561
+
0
-

A z jakého důvodu máš ‚action‘ v get i post parametrech? Určitě by tam měla být jen jednou.

pepakriz
Člen | 246
+
0
-

voda napsal(a):

A z jakého důvodu máš ‚action‘ v get i post parametrech? Určitě by tam měla být jen jednou.

Mám formulář a v něm input „action“. Uložení tohoto formuláře bez ajaxu proběhne uplně normálně a při uložení přes ajax nastane chyba. Rozhodně si myslím, že $_POST[„action“] nemá ovlivňovat action, vytaženou přes routu, navíc jen při ajaxovém požadavku.

Filip Procházka
Moderator | 4668
+
0
-

Já bych to udělal trochu jinak. Takto budou mít vyšší prioritu query parametry.

$params = $this->request->getParams();
if ($this->isAjax()) {
	$params += $this->request->getPost();
}

Každopádně toto je zapeklité a nějak mi nedochází, proč by v params měly být i POST data, když si je můžu získat jako $this->request->post.

knyttl
Člen | 196
+
0
-

S tímhle jsem měl taky problém, není to jen action, ale třeba i $params[‚id‘] je přepsáno ID poslaným z formuláře.