HTML v labelu u radio buttonu

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

Zdravíčko. Chtěl bych udělat něco takovéhoto:

<?php
 $lokalitaItems = array(
          'Buddha Bar' => 'Buddha Bar <a href="http://www.buddha-bar-hotel.cz/">www.buddha-bar-hotel.cz</a>',
        );
        $form->addRadioList('lokalita', 'Lokalita (prosím vyberte jedno pole)', $lokalitaItems)
        ->addRule(Form::FILLED, 'Vyberte vámi preferovanou lokalitu')
        ->getControlPrototype()->tabindex('3');
?>

V šabloně pak: {$form['lokalita']->control} vypíše label s htmlspecialchars. Jak nejjednodušeji dosáhnu toho, aby byl v tom labelu funkční odkaz. Resp, jak můžu přistoupit k labelu určitého radiobuttonu. Díky!

Editoval Martin Mates (17. 2. 2010 21:36)

Mikulas Dite
Člen | 756
+
0
-

Mělo by fungovat použít v labelu Html::el('a')->href($link)->setText('Popis');, případně to celé zabalit do nějakého Html::el('span')->insert(0,$tenLink);. viz API https://api.nette.org/…eb.Html.html

Editoval Mikulas Dite (17. 2. 2010 21:42)

Martin Mates
Člen | 179
+
0
-

Mikulas Dite napsal(a):

Mělo by fungovat použít v labelu Html::el('a')->href($link)->setText('Popis');, případně to celé zabalit do nějakého Html::el('span')->insert(0,$tenLink);. viz API https://api.nette.org/…eb.Html.html

Díky! Ten první způsob jsem zkoušel a to nefunguje. Ten druhý jsem neznal, zkusím. Zatím jsem to tam narval pomocí jQuery.

Mikulas Dite
Člen | 756
+
0
-

Já tím myslel prakticky to stejný, akorát že v ukázce si měl label text *link*, tak do toho spanu dát text a jako child node dát ten link. Jestli ale Html v tomhle labelu nefunguje, budeš si muset napsat vlastní renderer, nebo to spíš kreslit manuálně.

Editoval Mikulas Dite (17. 2. 2010 23:11)

ATom
Člen | 16
+
0
-

No, osobně bych považoval za nejlepší alespoň možnost escapování znaků v labelu vypnout. Nejsou to data od uživatele a velice často je potřeba tam dávat HTML, musí se tak dělat obezličky na to, co je normální. Typicky labely jako: Emistní limit CO<sub>2</sub>

Ondřej Brejla
Člen | 746
+
0
-

Nevím, nezkoušel jsem a nemám čas vyzkoušet…ale první, co mě napadlo…{!$form['lokalita']->control}

mkoubik
Člen | 728
+
0
-

ATom napsal(a):

No, osobně bych považoval za nejlepší alespoň možnost escapování znaků v labelu vypnout. Nejsou to data od uživatele a velice často je potřeba tam dávat HTML, musí se tak dělat obezličky na to, co je normální. Typicky labely jako: Emistní limit CO<sub>2</sub>

To má souvislost s tím, že renderování formuláře by bylo lepší mít ve view (v šabloně) – tam funguje {!$label} bez escapování. Něco k tomu je tady: https://forum.nette.org/…0-radku-kodu. BTW: bude se to nějak řešit v 1.0?

Martin Mates
Člen | 179
+
0
-

Ondřej Brejla napsal(a):

Nevím, nezkoušel jsem a nemám čas vyzkoušet…ale první, co mě napadlo…{!$form['lokalita']->control}

Tohle bylo také první, co jsem zkusil. To nejde. Nette hodí ještě jedno htmlspecialchars k labelu, který ten control automaticky vykreslí ke každému radio buttonu. K němu nevím, jak se dostat, abych tam propašoval ten vykřičník.