Frage

Ich möchte die Fehlermeldung in dem Feld anzeigen, für das es sich befindet. Ich weiß, wie man die Fehlermeldung in das Feld einfügt, aber ich möchte einen dynamischen Weg finden, um nach dem erneuten Abbau zu überprüfen, wenn der eingefügte Wert nicht die Fehlermeldung selbst ist. Ich benutze Lehre Anmerkungen. Wenn das Feld beispielsweise "Titel" ist, lautet die Fehlermeldung "Der Titel muss gefüllt werden!". Das Titelfeld ist also nicht mehr leer, ich klicke erneut auf Senden und es ist jetzt gültig. Ich möchte nicht jedes einzelne Feld so überprüfenif $entity->getTitle() == "The title must be filled" ...Ich habe dies mit nicht angezeigten Fehlerdiven im Zweig und jQuery geschafft, aber ich möchte wissen, ob es einen besseren Weg gibt, dies vom Controller zu tun. Vielen Dank

War es hilfreich?

Lösung

Sie fragen, wie Sie etwas falsch machen können ... Wenn der Eingabwert nicht der Wert ist, den Sie verarbeitet haben, hätte er nie der Wert sein dürfen. Davon abgesehen bin ich sicher, dass Sie Ihre Gründe haben ...

Sie müssen sich anhören FormEvents::BIND_CLIENT_DATA und löschen Sie die Formulardaten, wenn sie mit Ihrer Fehlerzeichenfolge übereinstimmen.

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('title');
    $builder->get('title')->addEventListener(
        FormEvents::BIND_CLIENT_DATA,
        function(FilterDataEvent $event)
        {
            if ('The title must be filled' == $event->getData()) {
                $event->setData('');
            }
        },
    );

Wenn Sie dieses Verhalten weltweit anwenden möchten 'field'. Sie müssen auch alle möglichen Validierungsfehlermeldungen für das aktuelle Feld mit dem Validator einführen und diese über den Übersetzer übergeben und dann die Ergebnisse mit den Ereignisdaten vergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top