Globálně pro required přidat hvězdičku za labelem?

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

Dá se nějak globálně pro required přidat hvězdičku za labelem? Používám AppForm. Tohle nefunguje:

<?php
		$form = new AppForm($this, 'form');

		$renderer = $form->getRenderer();
		$renderer->wrappers['label']['requiredsuffix'] = "*";
?>
Ondřej Mirtes
Člen | 1536
+
0
-

V CSS :o)

label.required:after {
	content: " *";
	color: #ff0000;
	font-weight: bold;
}

Myslím, že to je naprosto postačující.

rokerkony
Člen | 122
+
0
-

nebo takto:

$form = new AppForm($this, $name);
$renderer = $form->getRenderer();
$renderer->wrappers['label']['requiredsuffix'] = Html::el('span class="red"')->setText(' *');
pjoter
Člen | 118
+
0
-

přes css mi to nefunguje v ie. ten renderer mám pocit jakoby vůbec nefungoval asi proto že používám vlastní renderování ?

<?php
<div class="register-item">
	{$form['jmeno']->label}<br />
	{$form['jmeno']->control}
</div>
?>

existuje ještě nějaká další možnost ?

Editoval pjoter (15. 1. 2010 9:17)

Ondřej Mirtes
Člen | 1536
+
0
-

IMHO to nefunguje akorát v IE 6 a na ten jsem zanevřel.

Pokud nepoužíváš žádný renderer, tak už žádné možnosti asi nemáš. Leda si napsat vlastní.

pjoter
Člen | 118
+
0
-

no to cssko nebere ani ie 8 diky bille

Ondřej Mirtes
Člen | 1536
+
0
-

V IE8 mi to funguje.

rokerkony
Člen | 122
+
0
-

asi jedině tak nebo pomoci CSS …

zde se to řešilo

iguana007
Člen | 970
+
0
-

a proč nepoužiješ jQuery? :)

PetrP
Člen | 587
+
0
-

Ondřej Mirtes napsal(a):

V CSS :o)

label.required:after {
	content: " *";
	color: #ff0000;
	font-weight: bold;
}

Myslím, že to je naprosto postačující.

Naprosto nepřístupné řešení, například pro slepé. Čtečky dost často používají IE6 jádro, nebo rovnou běží v IE6.

Správné řešení je přes wrapper v ConventionalRendereru. (jak píšou jiný)

Nebo u ručního renderování si na to přidat podmínku:

{if $control->getOption('required')} * {/if}
dakota
Člen | 148
+
0
-

Uvítal by som, ak aby sa suffix (napr. :) a requiredsuffix (pre povinnú položku napr. *) dali nastavit nejako globalne aj pri ručnom renderovaní formulára. Často používam ručne renderovanie namiesto ConvetionalRenderer, mam tak lepšiu kontrolu nad vykreslením formulára.

Pri ručnom renderovaní sa však suffix a requiredsuffix nedajú nastaviť, pridá sa jedine class=„required“ na značku label ak je položka povinná.

Jednou z možnosti je v tomto prípade použiť:

<tr>
	<td>{$form['name']->getControl()}{if $form['name']->getOption('required')} * {/if}</td>
	<td>{$form['name']->getControl()}</td>
</tr>

Podmienku však musím pridať pri každej položke, ktora ma byť povinná. To zneprehľadňuje kód šablony a tiež nie je jednoduche zmeniť requiredsuffix. Klasicky suffix napr. pridanie dvojbodky za nazov položky tym neriešim.

Tiež by bolo vhodné ak by sa suffix, requiredsuffix dali pri ručnom renderovaní nastaviť v šablone, kde podla mňa toto nastavenie patrí, napr. spôsobom ako to je pri ConventionalRenderer, alebo ešte nejako jednoduchšie.

{? $form->getRenderer()->wrappers['label']['suffix'] = ":"}
{? $form->getRenderer()->wrappers['label']['requiredsuffix'] = "<span>*</span>"}

Pripravujú sa v tomto smere nejake zmeny???

radas
Člen | 220
+
0
-

Já jsem to řešil přes jQuery takto:

<script>
  $(document).ready(function()
  {
    $('label.required').append(' <span class="star">*</span>');
  });
</script>