Jak zjistit zda je user updatován nebo vytvářen?
- kikinet
- Člen | 35
Ahoj,
tuším, že tohle už tu určitě muselo být. Mám stejný formulář pro updatování i pro vytvoření usera. Pokud je updatován, hodím do url jeho id a dle něho vyplním formulář hodnotami. Krom jiného ukládám id usera do SESSION, protože po odeslání formuláře zmizí parametr z url a formulář se nechová jako update ale jako přidání nového usera ⇒ pokud je isset($_SESSION[‚id‘]) tak se user updatuje, jinak se vytváří.
- Je potřeba uchovávat id s session nebo to jde i jinak?
Pokud to ničemu nevadí, nastává tu jeden problém. Pokud neodešlu formulář s upravenými údaji a přejdu rovnou na jinou stránku, zůstane mi v session id usera, což způsobuje, že se formulář stále chová jako pro update…
- Jak smažu session, když uživatel stránku opustí, bez uložení změn?
- studna
- Člen | 181
Přidej si do formuláře hidden input „id“, který v případě editace
nastav pomocí $form->setValues(['id' => $userId])
. Při
zpracování formuláře pak můžeš jednoduchou podmínkou ověřit, zda-li
chceš záznam vložit a nebo updatnout.
if(empty($values->id)) {
// insert
} else {
// update
}
Editoval studna (11. 3. 2015 20:12)
- kikinet
- Člen | 35
Dobrý nápad, bohužel hidden value nedokážu poslat jako parametr do
funkce pro update. Netuším ale proč. Nenašla jsem nic ani na stackoverflow.
Tento řádek update($values->id)
, hlásí
Unexpected type of parameter: Nette\Forms\Controls\HiddenField
.
Jelikož parametr pro update() funkci je int, zkoušela jsem poslat do funkce
intval($values->id)
. Nečekaně ale, vrátila se mi stejná
chyba. Nějaká rada?
Editoval kikinet (12. 3. 2015 15:30)