Low level formulář s input type range. Jak dostat hodnoty input polí vytvořených uvnitř foreach loopu?

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

Mám rezervační systém pro hostel kde jsou sdílené pokoje. Člověk si může udělat rezervaci na několik postelí v každém pokoji. V šabloně mi foreach tvoří input range posuvníky pro každý pokoj, kde name attribut je vždy room-ID_POKOJE a pak value toho posuvníku je počet zvolených postelí. No a teď ale vůbec nevím jak si to poslat zpátky do presenteru společně s jiným formulářem, když to stojí v HTML mimo něj. Zkoušel jsem to co je v návodu na Low-levle formulář, ale vrácená hodnota je prázdná a už vůbec pak nevím jak dostat všechny ty hodnoty u těch posuvníku kde je value > 0 do nějakého pole typu Pokoj ID, Počet žádaných postelí. V aplikaci to vypadá takhle pro představu

screenshot aplikace v prohlizeci

Vytvoření formuláře v presenteru

public function createComponentFormReservation() {
    $form = new UI\Form;
		//tohle dostatnu zpátky bez problému, ale nevím jak přidat ty range slidery..
    $form->addHidden('from_value')->setAttribute('id', 'from_value');

    $form->addSubmit('send', 'Odeslat')->setAttribute('id', 'rb-tla-save');
    $form->onSuccess[] = $this->formReservationSubmitted;

    return $form;

}

v Šabloně

<div id="formular-hidden">
	//formulář s tím hidden inputem je tady ale slidery jsou uplně mimo, níže
	{control formReservation}
</div>
<div id="slidery">
//generování range sliderů pro každý pokoj
{foreach $availableRooms as $room}
	<input name="room-{$room['id']}" class="slider" type="range" min="0" max="{$room['num_free_beds']}" step="1">
{/foreach}
</div>

Zpracování formuláře v presenteru

public function formReservationSubmitted($form) {
    $data = $form->getValues();
		//tohle správně vezme hodnotu v inputu from_value a můžu jí v klidu uložit do šablony
		$test['x'] = $data['from_value'];


		//tohle je z toho low-level formuláře návodu, ale nic to nedělá myslím.
		//Ta proměná X pak nic neobsahuje a hlavně já potřebuju ne jen room-1 ale všechny pokoje
    $values = $form->getHttpData($form::DATA_TEXT, 'room-1');
    $values = $form->getHttpData($form::DATA_TEXT | $form::DATA_KEYS, 'room-1');

		//ideálně bych bral něco jako
		$test['x'] = $values;


    $sess=$this->getSession('rtc');
    $sess->x=$test['x'];

    $this->redirect('checkout');
}
Barvoj
Člen | 60
+
0
-

Jestli se nepletu, tak se hodnoty inputů mimo formulář vůbec neodesílají…

Takže jsou dvě možnosti, jak toto řešit:

  1. vykreslit formulář ručně a inputy generovat mezi tagy <form></form>
  2. přidat inputům mimo formulář atribut form vis http://www.w3schools.com/…put_form.asp

Editoval Barvoj (22. 2. 2016 9:33)

warriotox
Člen | 30
+
0
-

Barvoj napsal(a):

Jestli se nepletu, tak se hodnoty inputů mimo formulář vůbec neodesílají…

Takže jsou dvě možnosti, jak toto řešit:

  1. vykreslit formulář ruče a inputy generovat mezi tagy from
  2. přidat inputům mimo formulář atribut form vis http://www.w3schools.com/…put_form.asp

aha ok, tak s tím už si poradím díky.