Project

General

Profile

Fehler #347

Regression: min/max-Validator schlägt mit "min:0" bzw. "max:0" fehl

Added by -, blackcoder over 3 years ago. Updated about 3 years ago.

Status:
Erledigt
Priority:
Hoch
Start date:
09/08/2016
Due date:
% Done:

100%

Estimated time:

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

#1

Updated by Schwarz, Tobias over 3 years ago

Und wofür min:0? Lass es doch einfach weg?

#2

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?

#3

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.

#4

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') {

#5

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.

#6

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)

#7

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?

#8

Updated by Schwarz, Tobias about 3 years ago

Mach ruhig, komme frühestens heute Abend zum nachgucken.

#9

Updated by -, blackcoder about 3 years ago

  • Status changed from Neu to Erledigt
  • % Done changed from 0 to 100

Also available in: Atom PDF