vykreslení formulařu pomocí bootsrap

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

Zdravím, používám běžné vykreslení formulaře v presenter přes use Nette\Application\UI\Form; ale potřeboval bych ho nastylovat podle bootstrapových pravidel. Snažil jsem se to nastylovat přes
$form->getElementPrototype()->class=‚form-horizontal‘;
a ->setAttribute(‚class‘, ‚form-control‘) ale nepotřebuji stylovat jenom inputy ale i labely. Může mi někdo poradit. Četl jsem i tohle: https://forum.nette.org/…-bootstrap-3 ale nejsem z toho moc chytrý.

Díky za pomoc.

Pavel Kravčík
Člen | 1196
+
0
-

Vykreslujeme ručně kvůli barvám, ikonkám, více inputům na jednom řádku atd. Nejlepší varianta.

cvit84
Člen | 43
+
0
-

Mohl by mi tady někdo hodit prosím nějaky example? :(

newPOPE
Člen | 648
+
0
-

@cvit84 skus https://github.com/…otstrap-form je to simple nic nenastavujes. Mozno ti to bude stacit

Jakub.Man
Člen | 11
+
0
-

Nastav si renderer (Více info tady https://doc.nette.org/cs/forms#…)
Tím si můžeš nastavit jak se budou vykreslovat prvky formuláře.

Výchozí nastavení rendereru pro bootstrap vypadá nějak takto

<?php
$form = new Form;

$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';
?>

Potom jednotlivým prvkům formuláře přidáš přes ->setAttribute(‚class‘, ‚nazev-tridy‘) třídy bootstrapu (tlačítka, inputy …) a formulář se ti vykreslí v bootstrapu…

Kdybys chtěl úplně jednoduché řešení, můžeš použít prostě

<?php
		$renderer = $form->getRenderer();
		$renderer->wrappers['controls']['container'] = 'div';
		$renderer->wrappers['pair']['container'] = 'div';
		$renderer->wrappers['label']['container'] = null;
		$renderer->wrappers['control']['container'] = 'div';
?>

a v šabloně použít něco jako

<div class=„col-sm-12 col-md-6“>
{control nazevFormulare}
</div>

Landsman
Člen | 152
+
0
-

@cvit84 Na jednoduché formuláře: https://componette.org/…tstrap-form/

$form->setRenderer(new Bootstrap...)