Odesílání inputu s DISABLED

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Joacim
Člen | 229
+
0
-

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

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

Machy8 napsal(a):

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

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

Hodnoty disabled inputů se vůbec neodesílají prohlížečem. To, že je vidíte v objektu vráceném metodou Form::getValues()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
+
+2
-

Jak pise @duke (jen teda ne vychozi hodnota, ale prazdna hodnota)

A jinak muzes zkusit getHttpData, ktery vraci odeslany hodnoty

Joacim
Člen | 229
+
0
-

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