View Issue Details

IDProjectCategoryView StatusLast Update
0000137Adventure PHP FrameworkCode-Verbesserung // Code improvementpublic2015-10-12 12:20
ReporterdingsdaAssigned ToChristianAchatz 
PrioritynormalSeveritytweakReproducibilityN/A
Status closedResolutionfixed 
Product Version2.0 
Target VersionFixed in Version2.1 
Summary0000137: Änderung für calc-example + änderung von FloatFilter
Descriptiongrund ist hier zu finden: http://forum.adventure-php-framework.org/viewtopic.php?f=4&t=5376
ich hab in den Anhang zwei veränderte Versionen des ordners example reingetan. einmal wie es sein kann, wenn der FloatFilter des Frameworks gleich bleibt (ordner: example_1) und einmal wie es sein kann wenn der FloatFilter vom Framework geändert wird (ordner: example_2). Dazu dann noch die veränderten FloatFilter.php


meine änderungen:

- calc.html:

    -- <form:error> gibt jetzt "You did something wrong!" aus
        ** Grund: Die fehlermeldung "The input fields contain wrong content!" fand ich an der stelle als allgemeine Fehlermeldung nicht richtig. Sie wird ja immer ausgegeben sobald das Formular nicht valide ist. Also auch wenn bei einer Division als zweiter Operand eine Null eingegeben wurde. Allerdings passt die Fehlermeldung nicht dazu. Denn eine Null im Feld Operand2 ist kein "wrong content" sondern führt erst durch die Kombination mit dem Divisionsoperator zu einem nicht-validen Formular.
Man könnte die Fehlermeldung auch ganz weglassen, da sie überflüssig wird durch die anderen Fehlermeldungen. Allerdings fand ich es besser ein <form:error> drin zu haben, damit man als Einsteiger sieht, dass so etwas möglich ist.

    -- zwei neue listener eingefügt. für jeden operanden einer der nen Fehler anzeigt, wenn keine Zahl eingegeben wird
        * Grund: siehe vorriger abschnitt zur Allgemeinen fehlermeldung

    -- bei addfilter hab ich die adresse des FloatFilters verändert
        * Grund: der FloatFilter des Frameworks passt hier nicht so. dazu weiter unten mehr

    -- beim ZeroDivisionValidator-Listener hab ich die adresse des Validator bei validator= angegeben
        * Grund: hat sonst nicht funktioniert

- ZeroDivisionValidator.php
    -- Zeile 51 lautet nun
       if ($operation === 'div' && (float)$input === 0.0 && is_numeric($input))
        * Grund: ohne die prüfung auf is_numeric wurde ein die zeroDivision-Fehlermeldung auch ausgegeben, wenn man als zweiten operanden einen String eingegeben hat oder gar nichts. das ist aber eher ein Folgefehler und hat daher auch gleichzeitig die wrong-content Fehlermeldung ausgegeben.

- FloatFilter.php als neue datei im unterordner Filter
    -- ist fast das selbe wie der FloatFilter in APF\tools\form\filter\FloatFilter mit dem Unterschied, dass der return-wert nicht vorher in nen Float gecastet wird
        * Grund: durch das casten werden alle nicht-numerischen eingaben zu Null, sodass der NumberValidator danach nicht mehr funktionieren kann.
        * Ich würde es eigentlich sogar gut finden, wenn der FloatFilter des Frameworks so geändert wird. Denn dass man Filter und Validieren muss kommt nicht nur in diesem Beispiel vor. Ich habe aber da ich anfängerin bin lieber die Finger davon gelassen. Falls es im Framework geändert wird, ist die neue datei natürlich unnötig und der pfad von <addfilter..> in der calc.html kann wieder auf den floatfilter vom framework zeigen. hab die version auch mit angehängt wie oben bereits gesagt

Additional Informationin bin anfängerin, vielleicht hab ich daher auch nicht alles optimal gelöst. aber immerhin verhält sich das Beispiel jetzt so wie man es erwartet.
TagsNo tags attached.
Codereferenz: ([Datei]:[Zeile])
Namespacenone

Relationships

related to 0000138 closedChristianAchatz Create PHP Unit Tests for form validators and filters to document and proof functionality better 

Activities

ChristianAchatz

2014-02-04 22:26

administrator   ~0000195

Hallo dingsda,

mein Update wie im Forum besprochen:

1) Änderungen in "calc.html" habe ich übernommen - vielen Dank dafür! :)
2) "ZeroDivisionValidator.php" habe ich ebenfalls übernommen. Ein String wird wird allerdings zu "0" gefiltert und damit ist natürlich eine "Division by zero"-Meldung korrekt.
3) "FloatFilter.php" verhält sich an sich richtig - siehe Forum-Post. Ich habe zur detaillierten Definition der Implementierung einen Task 0000138 angelegt. Hier können wir und nochmal genauer über die Anwendungsfälle und Detail-Funktionsweise von Filtern und Validatoren unterhalten. Einverstanden?

Issue History

Date Modified Username Field Change
2014-02-04 19:50 dingsda New Issue
2014-02-04 21:52 ChristianAchatz Relationship added related to 0000138
2014-02-04 22:26 ChristianAchatz Note Added: 0000195
2014-02-04 22:27 ChristianAchatz Status new => resolved
2014-02-04 22:27 ChristianAchatz Fixed in Version => 2.1
2014-02-04 22:27 ChristianAchatz Resolution open => fixed
2014-02-04 22:27 ChristianAchatz Assigned To => ChristianAchatz
2015-10-12 12:20 ChristianAchatz Status resolved => closed