Vykreslení bootstrap 3 formuláře – přidání id do divu

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

Zdravím,
mám bootstrap formulář, u kterého potřebuji obalujícímu div (obaluje label a input) nastavit vlastní id, které bych nastavil pouze u některých prvků formuláře.

Prvek formuláře mám definovaný takto:

		$detail->addText('copies_count', 'Number of copies:')
			->setType('number')
			->setAttribute('id', 'copies_count');

Na vykreslení bootstrap formuláře používám tento kód:

// setup form rendering
		$renderer = $form->getRenderer();
		$renderer->wrappers['controls']['container'] = NULL;
		$renderer->wrappers['pair']['container'] = 'div class=form-group';
		$renderer->wrappers['pair']['.error'] = 'has-error';
		$renderer->wrappers['control']['container'] = 'div class=col-sm-9';
		$renderer->wrappers['label']['container'] = 'div class="col-sm-3 control-label"';
		$renderer->wrappers['control']['description'] = 'span class=help-block';
		$renderer->wrappers['control']['errorcontainer'] = 'span class=help-block';

		// make form and controls compatible with Twitter Bootstrap
		$form->getElementPrototype()->class('form-horizontal');
		foreach ($form->getControls() as $control) {
			if ($control instanceof Controls\Button) {
				$control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-default');
				$usedPrimary = TRUE;
			} elseif ($control instanceof Controls\TextBase || $control instanceof Controls\SelectBox || $control instanceof Controls\MultiSelectBox) {
				$control->getControlPrototype()->addClass('form-control');
			} elseif ($control instanceof Controls\Checkbox || $control instanceof Controls\CheckboxList) {
				$control->getSeparatorPrototype()->setName('div')->addClass($control->getControlPrototype()->type);
			} elseif ($control instanceof Controls\RadioList) {
				$control->getSeparatorPrototype()->setName('div')->addClass('checkbox-inline');
			}

		}

Uvený kód vygeneruje prvek formuláře takto:

<div class="form-group"> // zde potřebuji v některých případech doplnit své vlastní ID
	<div class="col-sm-3 control-label">
		<label for="copies_count">Number of copies:</label>
	</div>
	<div class="col-sm-9">
		<input name="detail[copies_count]" id="copies_count" class="form-control" min="0" value="0" data-lfv-initialized="true" data-lfv-message-id="copies_count_message" type="number">
		<span id="copies_count_message" class=""></span>
	</div>
</div>

Problém je, že definované id se mi nastaví pouze na input. Takže když chci následně pomocí JS celý prvek schovat, tak se schová pouze input a label zůstane.

Potřeboval bych tedy zjistit, jak můžu uvedené řešení doplnit o podmínku, kdy u požadovaného prvku nastavím na obalovací div své vlastní id.

Napadá Vás něco? Moc děkuju

Editoval Croc (13. 12. 2016 18:37)

Croc
Člen | 270
+
0
-

Tohle jsem zkoušel už předtím a udělá to stejnou věc co popisuju. Schová to pouze input a label to nechá…

CZechBoY
Člen | 3608
+
0
-

Posli kod jak si to aplikoval…mne to vzdycky jelo.
Nenastavujes to ID nekde jinde jeste?

Croc
Člen | 270
+
0
-

Áha, já totiž předtím použil ->setAttribute(), které nastavuje pouze na input…
->setOption() nastavuje na obalující div…

Díky