<?php
$form->addText('zip', 'PSČ:')
->addCondition($form::FILLED)
->addFilter(function ($value) {
return str_replace(' ', '', $value);
});
{$form[name]->errors} - vraci pole chyb toho inputu
{$form[name]->error} - vraci retezec s chybami spojenych mezerou (obvykle ma input jen jeden error, takze tohle je asi nejlepsi)
{inputError name} - makro, ktere vypise chybu inputu
{$form[name]->hasErrors()}
<input n:name="number">
<span class=error n:ifcontent>{inputError number}</span>
$input = $form->addInput('text');
$input->setDisabled(true); // nejdřív vypnout editaci
$input->setOmitted(false); // potom vypnout neodesílání
{form $form}
<ul class=error n:if="$form->ownErrors">
<li n:foreach="$form->ownErrors as $error">{$error}</li>
</ul>
<table>
<tr n:foreach="$form->controls as $input" n:class="$input->required ? required">
<th>{label $input /}</th>
<td>{input $input} <span class=error n:ifcontent>{$input->error}</span></td>
</tr>
</table>
{/form}
require_once('./Nette/loader.php');
define(HESLO_MIN_ZNAKU,6);
define(URL_ADRESA_OBCHODNICH_PODMINEK,'http://www.example.com/');
function loginValidator($item){
return dibi::query('SELECT [id] FROM [zakaznici] WHERE [nick]=%s LIMIT 1',$item->getValue())->count() == 0 ? true : false;
}
$form = new Form('registracni_formular');
$form->setMethod('post');
$form->getElementPrototype()->id = 'registrace';
$form->getElementPrototype()->class = 'formular';
$form->addGroup('Přihlašovací údaje');
$form->addText('nick','Login:',25)
->addRule(Form::FILLED, 'Login nebyl vyplněn')
->addRule('loginValidator', 'Tento login již existuje');
$form->addPassword('heslo','Heslo:',25)
->addRule(Form::FILLED, 'Heslo nebylo vyplněno')
->addRule(Form::MIN_LENGTH, 'Heslo je příliš krátké', HESLO_MIN_ZNAKU)
->setOption('description','Heslo musí mít minimálně '.HESLO_MIN_ZNAKU.' znaků');
$form->addPassword('heslo2','Zopakujte heslo:',25)
->addRule(Form::FILLED, 'Heslo nebylo vyplněno')
->addRule(Form::EQUAL, 'Hesla se neshodují',$form['heslo']);
$form->addGroup('Povinné údaje');
$form->addText('email', 'Email:',35)
->addRule(Form::FILLED, 'Email nebyl vyplněn')
->addRule(Form::EMAIL, 'Zadaný email není platným emailem')
->emptyValue = '@';
$typ_osoby = array(
'1' => 'Fyzická osoba',
'2' => 'Právnická osoba',
);
$form->addRadioList('typ', 'Typ:', $typ_osoby)->addRule(Form::FILLED, 'Vyberte typ registrovaného subjektu')->addCondition(Form::EQUAL, 2)->toggle('povinneUdajePravnicka');
$form->addText('jmeno','Jméno:',35)->addRule(Form::FILLED, 'Zadejte jméno');
$form->addText('prijmeni','Příjmení:',35)->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('ulice','Ulice:',35)->addRule(Form::FILLED, 'Zadejte ulici');
$form->addText('mesto','Město:',35)->addRule(Form::FILLED, 'Zadejte město');
$form->addText('psc','PSČ:',35)->addRule(Form::FILLED, 'Zadejte PSČ');
$souhlasLabel = Html::el()->setHtml('Souhlasím s <a href="'.URL_ADRESA_OBCHODNICH_PODMINEK.'" target="_blank">obchodními</a> podmínkami.');
$form->addCheckbox('souhlas', $souhlasLabel)->addRule(Form::FILLED, 'Pro pokračování je nutné souhlasit s podmínkami.');
$form->addGroup('Povinné údaje právnické osoby')->setOption('container', Html::el('fieldset')->id('povinneUdajePravnicka'));
$form->addText('firma','Firma:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte firmu');
$form->addText('ico','IČO:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte IČO');
$form->addText('dic','DIČ:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte DIČ');
$form->addGroup('Nepovinné údaje')->setOption('container', Html::el('fieldset')->id('nepovinneUdaje'));
$form->addText('telefon','Telefon:',35);
$form->addText('mobil','Mobil:',35);
$form->addText('fax','Fax:',35);
$form->setCurrentGroup(NULL);
$form->addSubmit('ok','Registrovat se')->getControlPrototype()->class = 'submit';
$form->addProtection('Vypršela platnost formuláře.');
if ($form->isSubmitted() and $form->isValid()) {
$values = $form->getValues();
unset($values['heslo2']);
unset($values['souhlas']);
$ok = dibi::query('INSERT INTO [zakaznici] %v',$values);
//..... nasleduje redirect
} else {
$defaults = array('typ'=>1);
$form->setDefaults($defaults);
}
{form ratingForm}
<div class="rating-form">
{foreach $form['container']->components as $name => $container}
<div class="double-line">
<div class="headline">
{$form["container-$name-question"]->caption}
</div>
<div class="inputs">
{* <textarea placeholder="Komentář" class="common autosize" rows="1"></textarea> *}
{input container-$name-question class => "common autosize", rows => "1"}
<!-- <input type="text" class="common" placeholder="Komentář" /> -->
<div class="radio-group">
<label class="fakeradio">
{input container-$name-question_checkbox_yes}
<span class="fakeradio">
<span></span>
</span>
<span class="text">{$form["container-$name-question_checkbox_yes"]->caption}</span>
</label>
<label class="fakeradio">
{input container-$name-question_checkbox_no}
<span class="fakeradio">
<span></span>
</span>
<span class="text">{$form["container-$name-question_checkbox_no"]->caption}</span>
</label>
</div>
</div>
</div>
{/foreach}
<div>
<a class="cart-button arrow-right blue formSubmit" href=""><span class="inner">{_}Odeslat{/_}</span></a>
</div>
</div>
{input submit class => "nod"}
{/form}
<form n:name=$form class="form">
<div class="row">
<div class="col-md-12">
<ul class=error n:if="$form->ownErrors">
<li n:foreach="$form->ownErrors as $error">{$error}</li>
</ul>
</div>
</div>
<div class="row">
{foreach $form->controls as $input}
{* get_class($input) *}
<div n:if="$input instanceof Nette\Forms\Controls\Checkbox" class="form-group {$class} {$input->required ? required}">
<label n:if="$input->caption" n:name="$input->name">
<input type="checkbox" n:name="$input">
{$input->caption}
</label>
<span class=error n:ifcontent>{$input->error}</span>
</div>
<div n:if="$input instanceof Nette\Forms\Controls\TextInput" class="form-group {$class} {$input->required ? required}">
<label n:if="$input->label" n:name="$input" class="control-label">{$input->caption}</label>
<input n:if="$input instanceof Nette\Forms\Controls\TextInput" n:name="$input" class="form-control">
<span class=error n:ifcontent>{$input->error}</span>
</div>
{/foreach}
</div>
<div class="row">
{foreach $form->controls as $input}
<div n:if="$input instanceof Nette\Forms\Controls\SubmitButton" class="col-md-3">
<input n:name="$input" class="btn btn-success">
</div>
{/foreach}
</div>
</form>
{form $form}
<ul class=error n:if="$form->ownErrors">
<li n:foreach="$form->ownErrors as $error">{$error}</li>
</ul>
<table>
<tr n:foreach="$form->controls as $input" n:class="$input->required ? required">
<th>{label $input /}</th>
<td>{input $input} <span class=error n:ifcontent>{$input->error}</span></td>
</tr>
</table>
{/form}