Default Form method – nežádoucí parametry v URL

matronator
Člen | 38
+
0
-

Omlouvám se jestli je tohle někde v dokumentaci, prošel sem jí asi dvakrát + pár query na googlu, ale nic jsem nenašel, ani v API dokumentaci.

Jaká je default method UI/Form, GET nebo POST? Pokážde totiž když odešlu formulář, tak konečná URL adresa obsahuje parametry na konci, pokaždé ve stylu něco jako ?_fid=sdz1. Tak mě právě napadlo jestli náhodou form neposílá defaultně GET, ale zase když se kouknu do dev tools, tak tam jsou ty hodnoty formuláře jako POST.

Druhá možnost co mě napadla je jestli to není způsobené Flash Messagema, který používám víceméně pokaždé po zpracování formu s redirectem, viz. příklad:

<?php

public function avatarFormSucceeded(Form $form, $values): void {
	$selected = $values->avatar;
	$player = $this->user->getIdentity();
	if ($player) {
		if ($selected >= 1 && $selected <= 21) {
			$this->userRepository->getUser($player->id)->update([
				'avatar' => $selected
			]);
			$this->flashMessage('Avatar changed', 'success');
			$this->redirect('this');
		}
	}
}

?>
  1. Je nutné u formu pokaždé nastavovat $form->setMethod('POST'); nebo je POST nastaven defaultně?
  2. Jestli je POST defaultně, co by tedy mohlo způsobovat ty URL parametry na konci?

___________________

EDIT: Tak teď jsem zkusil místo redirect() použít canonicalize() a už to URL háže všechny dobře, bez parametrů navíc.

Můžu používat canonicalize() všude namísto redirect()? Má to nějaké nevýhody, nebo bad practice?

Editoval matronator (2. 5. 2020 22:20)

Ondřej Kubíček
Člen | 494
+
+2
-

_fid je pro flash message

matronator
Člen | 38
+
0
-

Ondřej Kubíček napsal(a):

_fid je pro flash message

Aha, díky :) A jde někde nastavit aby se flash message posílaly v POST a ne v URL? A nebo můžu prostě všude používat canonicalize místo redirect aby se tam to fid neukazovalo?

CZechBoY
Člen | 3608
+
0
-

Vtip je v tom, ze redirect samozrejme ma metodu GET, protoze se prave zbavujes POST pozadavku.