Wrongly rendered option labels in form fields under some circumstances

From Joomla! Documentation

Revision as of 08:35, 13 March 2020 by Vovos (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

There is a known issue in form fields of type radio and list (presumably also others that extend the list field class) concerning option label translating.

Error reported[edit]

Option value label rendered incorrectly. Duplicate option labels.

Versions affected[edit]

Reported for Joomla 3.9.14 but older and newer versions are also affected for sure.

What is the cause[edit]

Example[edit]

The field definition:

<field name="moderator" type="radio" label="COM_EXAMPLE_SPEAKER_TYPE">
    <option value="0">COM_EXAMPLE_SPEAKER</option>
    <option value="1">COM_EXAMPLE_SPEAKER_MODERATOR</option>
</field>

1) The name of the field is moderator.

2) Look at the language strings of the option labels:

COM_EXAMPLE_SPEAKER

COM_EXAMPLE_SPEAKER_MODERATOR

3) At least the second one is present in a language ini file of the extension or otherwise loaded.


Resulting issue: The first one will lead to an error (= wrong option label) because Joomla magic is transforming it to COM_EXAMPLE_SPEAKER_MODERATOR while collecting the options for the output.

In other words: Joomla combines the language string COM_EXAMPLE_SPEAKER and the field name moderator to a wrong label COM_EXAMPLE_SPEAKER_MODERATOR because COM_EXAMPLE_SPEAKER_MODERATOR exists in the language ini file.

How to fix[edit]

Use another field name than moderator.

OR

Use another language string than COM_EXAMPLE_SPEAKER_MODERATOR for option label.

OR

Use another language string than COM_EXAMPLE_SPEAKER for option label.

More details[edit]

See https://github.com/joomla/joomla-cms/issues/27332