yakamara / yform

YForm für REDAXO 5 – Formulare im Frontend und Backend mit Verwaltung von Datenbank-Tabellen.
MIT License
77 stars 55 forks source link

choice: id Attribute nicht eindeutig, wenn die values z.B. "1" und "-1" sind #1224

Open tyrant88 opened 2 years ago

tyrant88 commented 2 years ago

Zwischenablage-1

Hier https://github.com/yakamara/redaxo_yform/blob/master/lib/yform/value/Choice/rex_yform_choice_view.php#L51 wird rex_string::normalize($this-value,'-') aufgerufen...

Wegen dem trim in https://github.com/redaxo/redaxo/blob/4a7418c4e2226fdb930fd98990091df5d00fc274/redaxo/src/core/lib/util/string.php#L55 wird der '-1' das '-' weggetrimmt und zur '1'...

alxndr-w commented 2 years ago

Kannst du in https://github.com/yakamara/redaxo_yform/blob/d252e5cb0f031e5731c063fa818eccca03473b18/lib/yform/value/Choice/rex_yform_choice_view.php#L51 mal schauen, ob man

$this->attributes['id'] .= '-'.rex_string::normalize($this->value, '-');

in

$this->attributes['id'] .= '-'.rex_string::normalize($this->value, '-', '-');

tauschen kann? Das Zeichen ist ja sonst gar nicht erlaubt.

tyrant88 commented 2 years ago

Das hast du falsch verstanden: der zweite Parameter im normalize ist das Zeichen, mit dem die Unerwünschten ersetzt werden. Nur das trim($string, $replaceChar) ist in diesem Fall ein trim('-1','-')

alxndr-w commented 1 year ago

Das Problem begegnet mir gerade wieder in zahlreichen Fällen, wann immer ich im Choice positive und negative Zahlenwerte gleichzeitig benutze: In meinen Addons (neues, produkte, events, yform_field, eigene), wann immer ich als Werte -1 und 1 gleichzeitig nutzen möchte.

@tyrant88 hast du dafür inzwischen einen Workaround gefunden, ohne die Werte-Definition zu ändern?

tyrant88 commented 1 year ago

Ich glaube ich hatte meinen js-Code so geändert, dass er nicht auf IDs angewiesen ist.