Zend Validierung Db_NoRecordExists und exclude-Option

7

Ich versuche, die Option "exclude" für einen Db_NoRecordExists-Validator zu verwenden, denn wenn ich das Element "bearbeite", gibt es immer wieder einen "duplizierten" Fehler zurück, wie üblich.

Ich möchte dem Formular mitteilen, dass der Wert, der vom Controller selbst an das Formular übergeben wird, zurückgehalten wird ...

Dies ist der Controller:

%Vor%

Dies ist das Formular:

%Vor%

// ... schneiden ...

Einige Ratschläge?

    
MiPnamic 21.03.2011, 14:15
quelle

6 Antworten

17

Ich hatte ein ähnliches Problem. Meine Lösung bestand darin, den Validator von init in die Funktion isValid zu verschieben.

%Vor%     
Richard Parnaby-King 21.03.2011, 14:46
quelle
2

Für mich funktioniert nur diese Lösung perfekt:

%Vor%     
Anna 28.10.2011 14:59
quelle
1

Was ich mache, vor der Validierungslogik im Controller, füge ich den folgenden Code hinzu, um das Feld mit den aktuellen Benutzerdaten zu vergleichen. Wenn es eine Übereinstimmung ist, entferne ich einfach den Validator von dem Element wie folgt:

%Vor%

An diesem Punkt wird die isValid-Logik kein Problem passieren.

%Vor%

Viel Spaß!

    
LeviXC 31.01.2014 16:12
quelle
1

Ich mochte die Lösung nicht, die Funktion isValid () außer Kraft zu setzen. Es fühlt sich an, als würden wir nicht verstehen, wie der Db_NoRecordExists Validator funktioniert. Sie müssen dem Validierer lediglich die tatsächliche ID des auszuschließenden Datensatzes angeben, bevor Sie isValid () aufrufen. Der Validator bietet sogar einen Accessor, um diesen Wert in sich selbst zu setzen! Die Zend-Anweisungen helfen auch nicht so gut, wie sie es könnten, also ist es nicht überraschend, dass die Leute damit kämpfen.

Hier ist eine elegantere und work-flow-orientierte Methode zum Festlegen des Ausschlusses, ohne das Formular zu hacken, zu erweitern oder zu überschreiben:

%Vor%

Der Ausschluss ist eigentlich ein Array unseres Feldes und Wertes. Wir teilen dem Validator gerade vor dem Aufruf von isValid () mit, was er ausschließen soll. Erledigt. Einfach.

    
WebTigers 25.09.2016 08:03
quelle
0

Nehmen Sie diese Änderungen am Formular vor:

%Vor%

Und zu der Bearbeitungsaktion:

%Vor%     
arturgrigor 10.08.2012 16:34
quelle
0

Sie müssen den Validator nicht in der Funktion isValid erstellen, sondern aktualisieren Sie nur die exclude -Klausel:

%Vor%     
jglatre 29.01.2013 18:25
quelle