Default Form method – nežádoucí parametry v URL
- matronator
- Člen | 38
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');
}
}
}
?>
- Je nutné u formu pokaždé nastavovat
$form->setMethod('POST');
nebo je POST nastaven defaultně? - 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)
- matronator
- Člen | 38
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?