Jak vypsat text za inputem?

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

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
+
0
-

viz https://doc.nette.org/cs/forms#…

$control->setOption('description', 'Lorem ipsum');

html tam muzes dostat pomoci Nette\Utils\Html

svezij
Člen | 69
+
0
-

Aha, ja jsem ale …, dokumentaci jsem samozřejmě četl, ale… ono mi to totiž nefungovalo a pořád se mi to description dávalo do atributu html kódu inputu, a já, hlupák, to tam cpal pomocí setAttribute a divím se. Mockrát děkuji :-)

Editoval svezij (4. 9. 2013 7:00)