PHP Symfony 5 Validierung

[ChAoZ]

Rear Admiral
Registriert
Jan. 2010
Beiträge
5.308
Hallo Leute,

eine REST App nimmt ein PUT-Request entgegen.
Dieser beinhaltet einen Unix-Timestamp.

Nun möchte ich diesen Parameter gerne optional machen.
Wird ein Timestamp übergeben, soll dieser anhand der hinterlegten Regeln validiert werden.
Wird kein Timestamp übergeben, soll die App eins erzeugen.

Code:
# routing
api_add_entry:
  path: /tracking/{timestamp}
  controller: App\Controller\MainController::addEntry
  defaults:
    timestamp: 0
  methods: [PUT]

Code:
# validation
App\Usecase\AddEntity\AddEntityRequest:
  properties:
    timestamp:
      - Length:
          min: 10
          max: 13

Testing:

Code:
# Fehler da nur 9 Zeichen -> gut
tracking/123456789

# Fehler da >15 Zeichen -> gut
tracking/1234567890123456

# Will ich es ohne Paramter aufrufen, knallt es -> schlecht
# No route found for "PUT /tracking/"
tracking/

Sollte beim letzten nicht die "default" Angabe aus dem Routing greifen?
Tut es nicht.

Auch ist es nicht möglich "Blank" Validator zusammen mit dem "Lenght" Validator zu paaren.
Wie gehe ich also am besten vor?

Danke
 
Danke. Aber schaue in mein Startpost, dort ist ein Default angegeben....
 
Diese Möglichkeit habe ich auch schon probiert.
Sollte gehen laut der Doku, tut es aber nicht.

Aufruf von "/tracking/" führt zu
No route found for "PUT /tracking/"

Erst wenn ich min. ein Zeichen einfüge (/tracking/1), dann greift die Route und es wird validiert.
Mein Ziel ist halt dass die Route auch ohne Paramter aufgerufen werden kann, das Framework soll in dem Fall dann ein Deault-Wert dafür nehmen, der dann validiert wird als ob es ein echter Parameter ist....
 
Zurück
Oben