submit html entity bez escapování

jannemec
Člen | 78
+
0
-

Zdar, potřeboval bych do value submitu vložit html entitu, ale nette mi ji scapuje – & → & lze to nějak obejít???

David Grudl
Nette Core | 8282
+
0
-

Entita je vždycky jen zástupce nějakého znaku, napiš přímo ten znak.

jannemec
Člen | 78
+
0
-

David Grudl napsal(a):

Entita je vždycky jen zástupce nějakého znaku, napiš přímo ten znak.

Nojo, ale jak zapsat entitu znak  – jsou to znaky material-design-icons fontu …
Sorry našel jsem – v jiném editoru ALT + decimal číslo funguje.

Díky

Editoval jannemec (4. 1. 2020 15:13)

David Grudl
Nette Core | 8282
+
+1
-

Nebo ctrl-c z tveho postu :-)

Ale nejlepší v PHP řetězci je asi "\u{f342}".

DefenestrationPraha
Člen | 134
+
0
-

David Grudl napsal(a):

Entita je vždycky jen zástupce nějakého znaku, napiš přímo ten znak.

Narazil jsem na situaci, kdy to není ekvivalentní postup. Snažím se udělat programatickými prostředky (nikoliv zápisem přímo v Latte) Multiselect ve formuláři, ve kterém jsou v jednotlivých options různé vícenásobné whitespaces (kvůli zarovnání).

V takové situaci funguje pouze  , kdežto ty whitespaces samotné, vložené napřímo, se prostě nezobrazí.

DefenestrationPraha
Člen | 134
+
0
-

Abych uvedl konkrétní příklad: u tohoto multiselectu by bylo esteticky hezké mít ty pomlčky pod sebou. Monospace font zajistí, že šířka písmen je stejná, ale ta mezera před 851 se nezobrazí. Ani, když ji tam vložím jako A0.

<select name="debugging_events[]" size="3" style="font-family: monospace, monospace;" class="form-group form-outline form-control form-select" id="frm-editDebuggingEventSettingsForm-debugging_events" multiple="">
<option value="851"> 851 - Automatic Task Executed Successfully</option>
<option value="1031">1031 - New Traffic Entries Created</option>
<option value="1032">1032 - Logical Processing of Incoming Traffic Finished</option>
</select>

Toto by fungovalo, ale zase to neumožní Latte, které tu entitu odescapuje:

<select name="debugging_events[]" size="3" style="font-family: monospace, monospace;" class="form-group form-outline form-control form-select" id="frm-editDebuggingEventSettingsForm-debugging_events" multiple="">
<option value="851">&nbsp;851 - Automatic Task Executed Successfully</option>
<option value="1031">1031 - New Traffic Entries Created</option>
<option value="1032">1032 - Logical Processing of Incoming Traffic Finished</option>
</select>

Uznávám, že jde jen o estetickou drobnost, která nemá závažný dopad na fungování aplikace. Jenom to tahá za oči, no.

Když dělá Latte context-sensitive escaping, možná by toto mohlo taky brát v úvahu. Ne všude jdou entity nahradit přímo zapsaným znakem, bohužel.

Editoval DefenestrationPraha (22. 2. 8:52)

nightfish
Člen | 527
+
+1
-

@DefenestrationPraha
Vzal jsem tvůj kód

<select name="debugging_events[]" size="3" style="font-family: monospace, monospace;" class="form-group form-outline form-control form-select" id="frm-editDebuggingEventSettingsForm-debugging_events" multiple="">
<option value="851"> 851 - Automatic Task Executed Successfully</option>
<option value="1031">1031 - New Traffic Entries Created</option>
<option value="1032">1032 - Logical Processing of Incoming Traffic Finished</option>
</select>

a vložil jej do Latte. Protože je před „851“ uvnitř <option> (obyčejná) mezera, tak je očekávatelně ignorována.

Když je nahradím za nezalomitelnou mezeru (Alt+0160; nebo také A0, jak jsi psal výše), tak se, opět podle očekávání, mezera před „851“ zachová. Verze Latte 3.0.20.

DefenestrationPraha
Člen | 134
+
+1
-

Ty brďo, magie. Díky!

Já jsem předtím zkoušel zkopírovat tu NBSP z různých ASCII tabulek na internetu, asi to holt nekopírovalo totéž. Případně \u{00a0} přímo ve stringu.