Jak vypsat text za inputem?
- svezij
- Člen | 69
Ahojte, vím, že něco podobného se zde už řešilo, ale nějak jsem z toho nevydedukoval vhodné řešení, proto se zeptám přímo. Potřeboval bych vypsat nějaký text za input, něco jako „nápovědu“ k inputu, atd. A děje se mi to poměrně často, takže řešit to na úrovni templatů mi nepřijde nejlepší řešení (když to jinak nepůjde, udělám to, ale ;-) ).
Př.:
mám třeba takovýto input a na posledním řádku (metoda
setHint()
) jsem uvedl příklad toho, jak by mohlo vypadat
řešení mého problému:
$form->addText('weight', 'Hmotnost', 40, 16)
->setAttribute('placeholder', 'Hmotnost')
->addRule(Form::FLOAT, 'Hmotnost musí být číselná hodnota.')
->setHint('kg'); // díky tomuto příkazu by se za input vypsalo "kg"
Výsledek by např. mohl být:
<label for="id">Hmotnost</label>
<input type="text" name="weight" placeholder="Hmotnost" ... />
kg
ještě lepší by bylo, kdyby tam šlo dát i html, protože bych mohl udělat jednou toto:
$form->addText('weight', 'Hmotnost', 40, 16)
->setAttribute('placeholder', 'Hmotnost')
->addRule(Form::FLOAT, 'Hmotnost musí být číselná hodnota.')
->setHint('<span class="unit">kg</span>');
a podruhé toto:
$form->addText('username', 'Uživatelské jméno', 40, 64)
->setAttribute('placeholder', 'Uživatelské jméno')
->setHint('<span class="help">Uživatelské jméno se musí skládat pouze z malých písmen.</span>');
Nebo by tento „hint“ mohl být ovlivnitelný přes
$renderer->wrappers
nebo tak.
Snad jde pochopit, co bych si přál. Existuje u formulářů nějaký takový konstrukt? Jde to nějak snadno provést? Díky :)
- David Matějka
- Moderator | 6445
viz https://doc.nette.org/cs/forms#…
$control->setOption('description', 'Lorem ipsum');
html tam muzes dostat pomoci Nette\Utils\Html