Odesílání inputu s DISABLED
- Joacim
- Člen | 229
Mám formulář vytvořený v *.latte a v presenteru si jen inicializuji jeho prvky
$form = new Form();
$form->addProtection();
$form->addText('name');
$form->addTextArea('description');
$form->addText('date');
$form->addCheckbox('all_day');
$form->addText('time_from');
$form->addText('time_to');
<form class="form-horizontal" role="form" n:name="addMeetingForm" action="" method="post" id="" autocomplete="off">
<div class="form-group">
<label for="inputEmail3" class="col-sm-3 control-label">Název</label>
<div class="col-sm-5">
<input n:name="name" type="text" class="form-control" id="inputEmail3" placeholder="Email">
<p class="help-block">Lorem ipsum dolor sit amet</p>
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-3 control-label">Popis</label>
<div class="col-sm-5">
<textarea n:name="description" class="form-control" rows="3"></textarea>
<p class="help-block">Lorem ipsum dolor sit amet</p>
</div>
</div>
Přes JQuery si nastavuji některé prvky disabled, ovšem i tak se mi odešlou, jak mohu toto nastavit vypnout ? Prvky se disabluji přes JQuery a každý je nastaven na jiná pravidla. Zkoušel jsem napsat i natvrdo disabled k inputu, ale i tak se odešle.
object(Nette\Utils\ArrayHash)#26014 (12) {
["name"]=>
string(0) ""
["description"]=>
string(0) ""
["date"]=>
string(10) "20/04/2016"
["all_day"]=>
bool(true)
["time_from"]=>
string(0) "" // hodnota byla disabled ale přesto se odeslala
["time_to"]=>
string(0) "" // hodnota byla disabled ale přesto se odeslala
Druhá věc, která by mě zajímala je jak dostat do
createComponentAddMeetingForm
hodnoty z $_GET, např:
$form->addHidden(‚type_id‘, NULL, HODNOTA_Z_GET); do hidden inputu si
potřebuji předat ID z get url
Editoval Joacim (6. 4. 2016 16:24)
- Machy8
- Člen | 59
Pokud nechceš hodnotu odesílat, tak ji vyjmeš pomocí
setOmmited(TRUE)
. Přidání hodnoty přez
setValue($value)
nefunguje? Pokud pole musí být vyplněno, nastav
setRequired()
.
$form->addText('time_from')->setValue($this->someValue); // Výchozí hodnota
$form->addText('time_to')->setOmmited(TRUE); // Hodnota bude vyjmuta
$form->addText('some_input')->setRequired(TRUE); // Musí být vyplněno
Editoval Machy8 (6. 4. 2016 16:57)
- Joacim
- Člen | 229
Machy8 napsal(a):
Pokud nechceš hodnotu odesílat, tak ji vyjmeš pomocí
setOmmited(TRUE)
. Přidání hodnoty přezsetValue($value)
nefunguje? Pokud pole musí být vyplněno, nastavsetRequired()
.$form->addText('time_from')->setValue($this->someValue); // Výchozí hodnota $form->addText('time_to')->setOmmited(TRUE); // Hodnota bude vyjmuta $form->addText('some_input')->setRequired(TRUE); // Musí být vyplněno
Ahoj, díky za odpověď. Bohužel ->setOmmited(TRUE);
vyjme
prvek z POST úplně, ale já potřebuji když je daný INPUT disabled
(neodešle se) a pokud disabled není odešle se spolu s ostatními prvky
formuláře. To zda je hodnota disabled nebo není nastavuji pomocí JQuery až
po načtení formuláře a přidávám do hodnotu disabled k datému tagu
- duke
- Člen | 650
Hodnoty disabled inputů se vůbec neodesílají prohlížečem. To, že je
vidíte v objektu vráceném metodou Form::getValues()
s jejich výchozí prázdnou hodnotou je očekávané chování,
neboť tato metoda prostě vrací hodnoty všech definovaných inputů
formuláře s výjimkou těch, které jsou označené k vynechání metodou
setOmitted()
.
Budete si tedy muset poradit jinak. Např. tak, že si pošlete informaci o tom, že to pole je neplatné, v nějakém hidden inputu nastavovaném javascriptem, a z objektu hodnot si ho pak na základě této informace vyfiltrujete ručně.
Editoval duke (9. 4. 2016 18:40)
- David Matějka
- Moderator | 6445
Jak pise @duke (jen teda ne vychozi hodnota, ale prazdna hodnota)
A jinak muzes zkusit getHttpData, ktery vraci odeslany hodnoty
- Joacim
- Člen | 229
David Matějka napsal(a):
Jak pise @duke (jen teda ne vychozi hodnota, ale prazdna hodnota)
A jinak muzes zkusit getHttpData, ktery vraci odeslany hodnoty
Ok, díky moc, jen mě to trošku zarazilo, nějak to ošetřím