Hinzufügen benutzerdefinierter Validierungsregeln zu SonataUserBundle

8

Ich habe SonataUserBundle gemäß den Dokumenten installiert und alles funktioniert gut. Außer dass ich keine benutzerdefinierten Validierungsregeln hinzufügen kann.

Nach meinem Verständnis sollten die neuen Regeln zu einer neuen Validierungsgruppe hinzugefügt werden, und dann wird config.yml aktualisiert, damit SonataUserBundle (oder FosUserBundle) der Validierungssequenz die neuen Regeln hinzufügt.

Ich habe das auf verschiedene Arten versucht, aber die neuen Regeln scheinen einfach nicht aufgegriffen zu werden ...

Hier ist die Konfiguration, die ich verwende ...

(Für dieses Beispiel versuche ich nur, einem neuen foo-Feld eine NotNull-Einschränkung hinzuzufügen. In der Realität würde ich gerne so viel Arbeit sehen und dann weitere Validierungsregeln hinzufügen.)

Ich habe das foo-Feld zu Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml hinzugefügt und alles funktioniert gut, indem ich das foo-Feld zur Klasse User.php hinzufüge.

%Vor%

In User.php haben wir die Eigenschaft mit ihren Getter und Setter:

%Vor%

Ich habe dann die neue Validierungsregel zu der bestehenden validation.yml-Datei meines Projekts hinzugefügt:

%Vor%

(Ich habe auch versucht, eine Datei namens validation.yml und validation.xml in Application \ Sonata \ UserBundle \ Resources \ config zu erstellen, aber das schien keinen Unterschied zu machen.)

In config.yml rufe ich SonataUserBundle auf, meine neue CustomGroup zur Validierung zu verwenden:

%Vor%

(Ich habe auch versucht, die Validierungsgruppe auf der Ebene fos_user ( fos_user.profile.form.validation_groups: [CustomGroup, Profile, Default] ) hinzuzufügen und in sonata_user.profile.register.form.validation_groups: [CustomGroup, Registration, Default] hinzuzufügen, aber ohne Erfolg.)

Und zur Vollständigkeit, hier ist das Feld, das UserAdmin.php hinzugefügt wurde:

%Vor%

Also ... was habe ich verpasst? Ist das Formular UserAdmin nicht das gleiche wie das Formular 'Profil'? (Obwohl ich auch versucht habe, die Registrierungsformulareinstellungen zu aktualisieren) Oder setze ich die Validierungsregeln woanders?

Hoffentlich habe ich gerade etwas Kleines verpasst!

Vielen Dank im Voraus,

C

    
caponica 01.09.2014, 16:02
quelle

1 Antwort

6

Das UserAdmin-Formular ist NICHT dasselbe wie das Profilformular.

Um herauszufinden, welche Validierungsgruppe ein Formular verwendet, öffnen Sie den Profiler von Symfony

  1. posten Sie Ihr Formular in der Entwicklungsumgebung (app_dev.php)
  2. öffnen Ссылка
  3. Sehen Sie sich die letzten 10 Einsendungen an.
  4. Klicken Sie auf die POST-Methode, mit der Ihr Formular eingereicht wurde (in diesem Fall das Sonatenbenutzer-Admin-Formular)
  5. klicken Sie auf FORMEN
  6. in Passed Options oder Resolved Options sollten Sie sehen, welche validation_groups eingestellt ist.

Um dem Benutzer UserAdmin create or edit des SonataUserBundle angepasste Validierungsregeln hinzuzufügen, müssen Sie Folgendes tun:

Wenn Sie sich Ссылка ansehen Sie sehen, dass die validation_groups für den Benutzer admin fest auf Registrierung (neu) oder Profil (bearbeiten) stehen.

Sie haben zwei Möglichkeiten.

A) Fügen Sie einfach Ihre Validierungsregeln zu Ihrem Projekt validation.yml hinzu und verwenden Sie die vorhandene Validierungsgruppe für die Registrierung.

%Vor%

B) Überschreiben Sie UserAdmin :: getFormBulder (), um Ihre benutzerdefinierte Validierungsgruppe hinzuzufügen

%Vor%     
Heyflynn 25.10.2015, 18:59
quelle