Readonly select viditelný při odeslání formuláře

sevca79
Člen | 55
+
0
-

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

rkor
Člen | 62
+
0
-

Tak tam dej jenom tu jednu hodnotu :)

CZechBoY
Člen | 3608
+
+1
-

za setDisabled() zavolej jeste ->setOmited(false)

sevca79
Člen | 55
+
0
-

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
+
0
-

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

CZechBoY
Člen | 3608
+
0
-

Pokud je disabled a víš jeho hodnotu tak je jedno jestli se pošle přes http nebo ne – ty tu hodnotu totiž nastavíš v aplikaci.
Samozřejmě je potřeba nejdřív nastavit formulář a až potom mu dát nějaký hodnoty.

sevca79
Člen | 55
+
0
-

@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 ;)