Created
April 23, 2015 15:06
-
-
Save wodCZ/d2f802f028e552155597 to your computer and use it in GitHub Desktop.
BS3FormRenderer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Forms; | |
use Nette\Forms\Controls; | |
use Nette\Forms\Form; | |
/** | |
* Class BS3FormRenderer | |
* | |
* @package App\Forms | |
*/ | |
class BS3FormRenderer | |
{ | |
/** | |
* BS3 form renderer. Taken from https://github.com/nette/forms/blob/master/examples/bootstrap3-rendering.php | |
* | |
* @param Form $form | |
* @param int $labelColumns | |
* @param int $controlColumns | |
*/ | |
public static function horizontal(Form $form, $labelColumns = 3, $controlColumns = 9) | |
{ | |
$renderer = $form->getRenderer(); | |
$renderer->wrappers['controls']['container'] = NULL; | |
$renderer->wrappers['pair']['container'] = 'div class=form-group'; | |
$renderer->wrappers['error']['container'] = NULL; | |
$renderer->wrappers['error']['item'] = 'div class="alert alert-danger"'; | |
$renderer->wrappers['pair']['.error'] = 'has-error'; | |
$renderer->wrappers['control']['container'] = "div class=col-sm-$controlColumns"; | |
$renderer->wrappers['label']['container'] = "div class=\"col-sm-$labelColumns control-label\""; | |
$renderer->wrappers['control']['description'] = 'span class=help-block'; | |
$renderer->wrappers['control']['errorcontainer'] = 'span class=help-block'; | |
$form->getElementPrototype()->class[] = 'form-horizontal'; | |
self::addInputClasses($form); | |
} | |
/** | |
* @param \Nette\Forms\Form $form | |
*/ | |
public static function vertical(Form $form) | |
{ | |
$renderer = $form->getRenderer(); | |
$renderer->wrappers['controls']['container'] = NULL; | |
$renderer->wrappers['pair']['container'] = 'div class=form-group'; | |
$renderer->wrappers['error']['container'] = NULL; | |
$renderer->wrappers['error']['item'] = 'div class="alert alert-danger"'; | |
$renderer->wrappers['pair']['.error'] = 'has-error'; | |
$renderer->wrappers['control']['container'] = NULL; | |
$renderer->wrappers['label']['container'] = NULL; | |
$renderer->wrappers['control']['description'] = 'span class=help-block'; | |
$renderer->wrappers['control']['errorcontainer'] = 'span class=help-block'; | |
$form->getElementPrototype()->class[] = 'form-horizontal'; | |
self::addInputClasses($form); | |
} | |
/** | |
* @param Form $form | |
*/ | |
private static function addInputClasses(Form $form) | |
{ | |
foreach ($form->getControls() as $control) { | |
if ($control instanceof Controls\Button) { | |
$control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-success' : '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 instanceof Controls\RadioList) { | |
$control->getSeparatorPrototype()->setName('div')->addClass($control->getControlPrototype()->type); | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$form = new Form(); | |
$form->addText(..); | |
$form->addSubmit(..); | |
BS3FormRenderer::horizontal($form); // labely vedle inputu 3/9 | |
BS3FormRenderer::horizontal($form,4,9); // labely vedle inputu, 4/8 - víc místa pro labely | |
BS3FormRenderer::vertical($form); // labely nad inputem | |
return $form; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment