Editace – persistentní parametr nebo form hiddent input
- Jiří Nápravník
- Člen | 710
Jaké je správné řešení editace položky? Ukládáte si ji do persistentního parametru nebo přes formulářové hidden pole? Vidím v některých aplikacích to i to, tak nevím, co je doporučováno.
- jiri.pudil
- Nette Blogger | 1032
https://doc.nette.org/…editing-form
tl;dr:
Chcete-li editovat záznam, musíte předat jeho id ukládající funkci. Můžete k tomu sice použít
$form->addHidden()
, ve většině případů je ale vhodnější použít persistentní parametr.
- Šaman
- Člen | 2666
Zatím jsem vždycky použil hidden pole. Na nastavený persistentní
parametr bych se moc nespoléhal, ten je součástí adresy a kdokoliv ho může
přepsat, smazat, přidat. Přidávací a editační formulář jsou u mě dvě
samostatné třídy, které mohou obsahovat společný kontejner s většinou
políček. Nicméně ani ten kontejner nepoužívám a oba formuláře jsou
zcela samostatné – a často se liší ve víc než jen v tom hidden poli
(ledacos se editovat nedá, nebo jen některá povolená pole).
Pokud si dobře vzpomínám, tak ve všech firmách kde jsem pracoval se
používal podobný princip.
- Jiří Nápravník
- Člen | 710
jiri.pudil: presne tuhle stranku mam uz delsi dobu na zalozkach. nicmene videl jsem prave i jinde, hidden pole, dokonce tuším i Davida, tak jsem si říkal, co je správnější.
Šaman: díky, mě je nějak sympatičtější taky používat hidden pole, jsem tak zvyklý odjinud. nicméně používám tedy jednu třídu pro editaci i přidávání, většinou se shoduje ve všem kromě hidden pole, ale to když nemá id, tak přidávám, jinak edituji.
- thunderbuff
- Člen | 164
Já to řeším tak, že si ve formu místo hidden prvku přímo ve třídě formuláře držím editovanou položku nebo její ID. Není potřeba hidden pole.
<?php
class MyEditForm extends Form {
private $id;
public function __construct($id) {
parent::__construct();
$this->id = $id;
$this->addText(...)
...
$this->onSuccess[] = callback($this, 'success');
}
public function success(MyEditForm $form) {
echo "Editovane ID je " . $this->id;
}
}
?>
- David Matějka
- Moderator | 6445
ja vetsinou pouzivam persistentni parametr
@Šaman: a hidden pole se nenecha prepsat? :)
- Oli
- Člen | 1215
@thunderbuff: Takže vlastně si předáváš id v URL. Nebo kde ho získáš?
btw. Přijde mi lepší dědit Control než Form. Chvilku jsem taky
používal Form, jako předka pro třídu s formulářem. Control ti ale dává
minimálně jednu velkou výhodu. Oddělíš i šablonu formuláře od šablony
presenteru. Je teda pravda, že jsem nezkoušel, jestli funguje ve třídě,
která dědí od Form metoda render()
. Mám pocit, že jsem to
i někde četl, že je lepší Control než Form jako předek pro
formulářovou třídu…
Abych nebyl uplně OT, tak já taky používám persistentní parametr :-)