private function setupRenderersLayout() { $renderer = $this->form->getRenderer(); if ($renderer instanceof DefaultFormRenderer) { $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'; } }
/** * Renders form begin. * @param Form $form * @param array $attrs * @param bool $withTags * @return string */ public static function renderFormBegin(Form $form, array $attrs, $withTags = TRUE) { $renderer = $form->getRenderer(); if ($renderer instanceof IManualRenderer) { $renderer->beforeRender($form); } return parent::renderFormBegin($form, $attrs, $withTags); }
/** * Front-end unsubscription form * * @return Nette\Forms\Form */ public static function unsubscriptionForm($widget = FALSE, $widgetId = '') { $form = new Form('unsubscriptionFront' . $widgetId); $form->addText('email', 'Your e-mail address')->setRequired('To unsubscribe, you need to fill in your e-mail address.')->addRule(Form::EMAIL, 'Your e-mail address must be valid.'); $form->addSubmit('submit', 'Unsubscribe')->setAttribute('class', 'subscribeButton'); // swap renderer for widgets if ($widget == TRUE) { $renderer = $form->getRenderer(); $renderer->wrappers['controls']['container'] = 'dl'; $renderer->wrappers['pair']['container'] = NULL; $renderer->wrappers['label']['container'] = 'dt'; $renderer->wrappers['control']['container'] = 'dd'; } return $form; }
public static function bootstrapForm(Form $form) { // 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-shadow' : 'btn btn-default'); $usedPrimary = TRUE; } elseif ($control instanceof Controls\TextBase || $control instanceof Controls\SelectBox || $control instanceof Controls\MultiSelectBox) { $control->getControlPrototype()->addClass('form-control form-control-shadow'); } elseif ($control instanceof Controls\Checkbox || $control instanceof Controls\CheckboxList || $control instanceof Controls\RadioList) { $control->getSeparatorPrototype()->setName('div')->addClass($control->getControlPrototype()->type); } } }
<?php /** * Nette\Forms custom rendering example. */ require_once __DIR__ . '/../../Nette/loader.php'; use Nette\Forms\Form, Nette\Debug, Nette\Web\Html; Debug::enable(); $countries = array('Select your country', 'Europe' => array('CZ' => 'Czech Republic', 'SK' => 'Slovakia', 'GB' => 'United Kingdom'), 'CA' => 'Canada', 'US' => 'United States', '?' => 'other'); $sex = array('m' => Html::el('option', 'male')->style('color: #248bd3'), 'f' => Html::el('option', 'female')->style('color: #e948d4')); // Step 1: Define form with validation rules $form = new Form(); // setup custom rendering $renderer = $form->getRenderer(); $renderer->wrappers['form']['container'] = Html::el('div')->id('form'); $renderer->wrappers['form']['errors'] = FALSE; $renderer->wrappers['group']['container'] = NULL; $renderer->wrappers['group']['label'] = 'h3'; $renderer->wrappers['pair']['container'] = NULL; $renderer->wrappers['controls']['container'] = 'dl'; $renderer->wrappers['control']['container'] = 'dd'; $renderer->wrappers['control']['.odd'] = 'odd'; $renderer->wrappers['control']['errors'] = TRUE; $renderer->wrappers['label']['container'] = 'dt'; $renderer->wrappers['label']['suffix'] = ':'; $renderer->wrappers['control']['requiredsuffix'] = " •"; // group Personal data $form->addGroup('Personal data'); $form->addText('name', 'Your name')->addRule(Form::FILLED, 'Enter your name'); $form->addText('age', 'Your age')->addRule(Form::FILLED, 'Enter your age')->addRule(Form::INTEGER, 'Age must be numeric value')->addRule(Form::RANGE, 'Age must be in range from %d to %d', array(10, 100)); $form->addSelect('gender', 'Your gender', $sex);
/** * @param Form $form * @param array $args */ private static function renderFormBegin(Form $form, array $args) { if ($form->getRenderer() instanceof BootstrapRenderer) { $form->render('begin', $args); } else { Nette\Bridges\FormsLatte\FormMacros::renderFormBegin($form, $args); } }