Vypnutí htmlspecialchars u appForm->addSelect

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

Zdravím, mám drobný problém.
V presenteru mám $form->addSelect(‚menu‘, ‚Menu‘, $items);
$items obsahuje pole dat, kde používám entity, jako například & raquo; (bez té mezery za ampersandem, ono by se to jinak převedlo na »).
V praxi dump vypadá nějak takto: array(1) { „submenu“ ⇒ string(19) „»»submenu“}.

Můj problém je, že daný select se ve finále vykreslí takto: <option value=„submenu“>&raquo;&raquo;submenu</option>, což je samozřejmě špatně, protože ampersand je nahrazen za entitu a místo krásných dvou šipek se mi zobrazí změť znaků.

Jak AppFormu vysvětlím, že htmlspecialchars v tomto místě skutečně nepotřebuji?

Děkuji.

Honza Kuchař
Člen | 1662
+
0
-

A co tam jako vtup dát »? Máme snad UTF-8, ne?

Z0MBie
Člen | 19
+
0
-

Že já hledám složitosti tam, kde nejsou :)).
Díky, na tenhle případ to pomohlo.

Ale stejně by mne nějaké standartní řešení zajímalo – například s mezerou už to tak nefunguje a & nbsp; to samozřejmě nevezme.

Mikulas Dite
Člen | 756
+
0
-

Html::el('&raquo;') by mělo být v pohodě.

Z0MBie
Člen | 19
+
0
-

Html::el(‚»‘) mi ve výsledku vyrobí <&raquo;></&raquo;> (což se samozřejmě ještě doescapuje a v praxi to tedy nefunguje.

Ondřej Mirtes
Člen | 1536
+
0
-

Já nevím, co je na tomto zdrojáku špatně:

<option value="submenu">&raquo;&raquo;submenu</option>

Vždyť se to v prohlížeči vykreslí přesně tak, jak zamýšlíš.

Z0MBie
Člen | 19
+
0
-

Ano,

<option value="submenu">&raquo;&raquo;submenu</option>

by bylo správně.
Jenže Nette na výstup pošle

<option value="submenu">&amp;raquo;&amp;raquo;submenu</option>
Ondřej Mirtes
Člen | 1536
+
0
-

Jak to vykresluješ? Teď jsem to zkusil:

$form = new Form;
$form->addSelect('test', 'Test:', array('»»submenu'));
echo $form;

A je to naprosto v pořádku. Tobě se to nějakým způsobem escapuje dvakrát.

Z0MBie
Člen | 19
+
0
-

Používám to jako AppForm a v šabloně mám {widget menuForm}. Možná, že k tomu escapování dochází tam