Readonly select viditelný při odeslání formuláře
- sevca79
- Člen | 55
Ahoj,
trápím se tím už nějakou chvíli a furt mi nic nefunguje..
Mám formulář a v něm select a někdo má právo tento select měnit někdo ne, ale u toho kdo ho měnit nemůže mu chci ukázat co tam má za hodnotu..
to co bych tak chtěl je něco jako
$form->addSelect('type', 'Type', $typesSelect)
->setDisabled();
avšak já bych rád i po odeslání formuláře věděl co je v tomto
prvku nastaveno, což mi setDisabled vyhodí..
zkoušel sem něco jako ->setAttribute(‚disabled‘, true) či
->setAttribute(‚disabled‘, ‚disabled‘) či
->setAttribute(‚readonly‘, true) ale nic mi nefunguje..pokud
nemám natvrdo ten ->setDisabled(), tak mi to vždy jde měnit
poradí prosím někdo jak tento SELECT mám zareadonlyovat ;)
/po zkontrolování srozumitelnosti otázky mě napadlo/
Nebo tam mám prostě hodit nějakej hidden input a do něj to duplikovat a dát
něco jako if(isset($values[‚type‘]) $value=$values[‚type‘] else
$value=$values[‚tenHidden‘]…což asi bude v tuto chvíli
nejjednodušší…nebo??
díky
- sevca79
- Člen | 55
CZechBoY napsal(a):
za setDisabled() zavolej jeste ->setOmited(false)
tak napůl pomohlo :) – čekal sem to o trošičku lepší :)
sice se to poslalo, ale s hodnotou jako NULL :(
prostě když dám v presenteru do actionEdit
$this["mujForm"]->setDefaults($defaultsData)
tak při odeslaní jsou dané hodnoty u kterých sem nastavil ten setDisabled a setOmitted(false) NULL :(
Když ale dám zato setOmitted(false) ještě
->setDefaultValue($spravnaHodnota), tak se to již posílá
správně..
Jen tedy to budu muset trošku překopat a ty správný hodnoty posílat jako
parametry do funkce create v továrničce.. a to sem ji chtěl od parametrů
ušetřit :) a nastavovat to nějak přes setDefaults
ale přesto díky ;)
- ali
- Člen | 342
Kdyz je control ‚disabled‘, tak neni ani v $_POST-u, https://www.w3.org/…t/forms.html#…
Pouzij readonly, https://www.w3schools.com/…readonly.asp
- sevca79
- Člen | 55
@ali u <select>u readonly nefunguje
@CZechBoY setDefaults sem volal až poté co proběhla metoda create se setDisabled a stejně se to poslalo s null. Chtěl sem to tam mít schválně, pač někdo má právo to měnit a někdo ne, abych si ulehčil práci poté při vyhodnocování formuláře..sem ale blbej, pač sem nevěděl, že setDefaults a setDefaultValue má asi jiný chování (takže to nemusím posílat jako parametr do create)..pač viz následující..
když v actionEdit zavolám
$data=$this->mujModel->getData($id);
$this['mujForm']->setDefaults($data);
tak mi právě ta hodnota, u které je nastaveno setDisabled a setOmitted(false) se po odeslání pošle jako NULL
avšak když udělám následující
$data=$this->mujModel->getData($id);
$this['mujForm']['type']->setDefaultValue($data['type']);
tak se mi už ta samá hodnota při odeslání formuláře pošle s danou přednastavenou hodnotou..což sem chtěl…
nevím zda jsem nenašel bug, či je toto chování správné
ale jinak díky za pomoc ;)