Fehler #347
Regression: min/max-Validator schlägt mit "min:0" bzw. "max:0" fehl
100%
Description
Wenn man den min/max-Validator nutzen möchte, schlägt er mit "min:0" bzw. "max:0" fehl. Er funktioniert mit "min:1"/"max:1".
Ilch\Validation\Validators\Min expects at least 1 parameter(s) given: 0
Da inzwischen an vielen Stellen z.B. "min:0" genutzt wird, haben wir jetzt bei mehreren Modulen Probleme.
Regression von https://github.com/IlchCMS/Ilch-2.0/pull/238 ?
History
Updated by -, blackcoder over 3 years ago
Ich arbeite gerade am Kommentar-Modul und bei der Einstellung für die maximale Tiefe der Verschachtelung der Kommentare möchte ich negative Werte verhindern.
An anderen Stellen sind die gültigen Werte z.B. 0 und 1. Dort sollen auch Zahlen wie -1 usw. ausgeschlossen werden.
Einen Anwendungsfall wie "max:0" gibt es bisher soweit ich weiß noch nicht, aber wieso sollte das nicht funktionieren?
Updated by Schwarz, Tobias over 3 years ago
https://github.com/IlchCMS/Ilch-2.0/blob/master/application/libraries/Ilch/Validation.php#L183
Die Stelle schluckt die 0.
Lösung? Keine Ahnung, entweder nen String mit "0" (&& $param !== "0") zulassen oder empty() rausschmeißen und mit strlen > 0 testen.
Alternativ kann man natürlich auch einfach alles Rüçkgängig machen, wenn das mehr Spaß macht.
Updated by -, blackcoder over 3 years ago
Ich wäre mit der Lösung "&& $param !== '0'" in der von dir verlinkten Zeile anzuhängen zufrieden.
Dann ist das Problem ja schnell erledigt. :)
if (empty($param) && $param !== '0') {
Updated by Schwarz, Tobias over 3 years ago
Ich hoffe das deckt dann alles ab, strlen wäre wohl die sicherster Alternative, aber eigentlich sollte nur "0" von empty gefressen werden :P
Kannst du es mal testen? Komme aktuell nicht dazu.
Updated by -, blackcoder over 3 years ago
Also ich habe mal kurz bei einem Input-Element, welches ich mit folgenden Validatoren überprüfe, verschiedene Eingaben ausprobiert und keine Probleme gefunden.required|numeric|integer|min:0
- "" (required hat gegriffen)
- 1.5 (integer hat gegriffen)
- -1 (min:0 hat gegriffen)
- a (numeric hat gegriffen)
Habe vorhin auch mal "min:-1" getestet und das klappte auch.
(min:-1.5 und ähnlich funktioniert nicht, aber das ist ein anderes Thema - integer-casts z.B. im min-Validator)
Updated by -, blackcoder about 3 years ago
Ich könnte das Abschicken eines PR für diese Änderung übernehmen, falls du nicht dazu kommst und nichts dagegen hast. Oder ist etwas Größeres in Arbeit?
Updated by Schwarz, Tobias about 3 years ago
Mach ruhig, komme frühestens heute Abend zum nachgucken.
Updated by -, blackcoder about 3 years ago
- Status changed from Neu to Erledigt
- % Done changed from 0 to 100