[Frage] Validierung von Parametern, die nicht zum Domänenobjekt gehören

  • Drusilla Drusilla
    R2-D2
    0 x
    92 Beiträge
    1 Hilfreiche Beiträge
    22. 08. 2018, 10:33

    Hallo,
    ich erstelle gerade ein Formular, in dem sowohl Felder enthalten sind, die zum Domänenobjekt gehören, als auch welche, die nicht dazu gehören.
    Für letztere habe ich einen zusätzlichen Validator geschrieben, der läuft auch prima durch und schickt mich brav bei Fehlern zum aufrufenden Formular zurück. An dieser Stelle würde ich gerne die Fehler ausgeben, da diese aber nicht zum Domänenobjekt gehören, habe ich grade keine Ahnung, wie ich darauf zugreifen kann bzw. wie diese überhaupt korrekt vom Validator übergeben werden sollen.

    So sieht mein Code aus:
    New.html:
    [code]<f:form action="create" enctype="multipart/form-data" name="newAnzeige" object="{newAnzeige}">
    ...
    <f:form.upload name="bild[0]" class="form-control-file" />
    <f:form.upload name="bild[1]" class="form-control-file" />
    ...
    </f:form>
    [/code]

    Im Controller:
    [code]...
    * @param \array $bild
    * @validate $bild \xxx\xxx\Validation\Validator\BilderValidator
    * @return void
    */
    public function createAction(\xxx\xxx\Domain\Model\Anzeige $newAnzeige, $bild)
    ...
    [/code]

    der Validator:
    [code]protected function isValid($value) {
    ...
    $this->addError('falsches Bildformat', 1534923561);
    //bzw.
    $this->result->forProperty('bilder')->addError('falsches Format', 1534923560);
    ...
    }
    [/code]
    Geht beides nicht, vermutlich ist hier die Übergabe falsch ... Wie macht man das denn korrekt?

    Fehlerausgabe im Template:
    [code]<f:form.validationResults for="newAnzeige">
    <f:if condition="{validationResults.flattenedErrors}">
    <ul>
    <f:for each="{validationResults.flattenedErrors}" key="propertyPath" as="errors">
    <f:for each="{errors}" as="error">
    <li>{error}</li>
    </f:for>
    </f:for>
    </ul>
    </f:if>
    </f:form.validationResults>
    [/code]
    Wird aber natürlich nur für das Domänenobjekt aufgerufen.

    Steh total auf dem Schlauch ...
    Danke im Voraus für Tipps und Hinweise!


  • 1
  • Drusilla Drusilla
    R2-D2
    0 x
    92 Beiträge
    1 Hilfreiche Beiträge
    22. 08. 2018, 13:27

    Mittlerweile habe ich das Problem gefunden, wie so oft steht man sich selber im Weg ...
    Bei der Ausgabe der Fehler, beschränke ich dieses auf das Domänenobjekt, wenn man das weg lässt, bekommt man auch die anderen Fehler:
    Anstelle <f:form.validationResults for="newAnzeige"> das hier <f:form.validationResults> ...

  • 1