Empfehlungen: Erweiterte Suche

validierung der Eingabedaten funktioniert nicht

Datenbankobjekte strukturieren und validieren

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon euromark » Do 28. Mai 2009, 12:56

das ist veraltete Syntax
Es sollte schon eher so aussehen:

Code: Alles auswählen
    var $validate = array(
        'username' => array(
            'isUnique' => array(
                'rule' => 'isUnique',
                'message' => 'Username already exists',
            ),     
            'notEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Mandatory',
            ),
        ),
...
);
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon Luckie » Do 28. Mai 2009, 13:09

Hehe, jetzt liefert die Validierung immer True, auch wenn ein oder beide felder leer sind:
Code: Alles auswählen
    var $validate = array
    (
        'username' => array
        (
            'notEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Pflichtfeld'
            )
        ),
        'password' => array
        (
            'notEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Pflichtfeld'                
            )
        )
    );
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon euromark » Do 28. Mai 2009, 13:15

zeig nochma den code den du aufrufst
+ was in $this-data drin ist wenn es an das Model übergeben wird
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon Luckie » Do 28. Mai 2009, 13:19

Ich nehme alles zurück. Im Controller war der Cod enoch auskommentiert, wegen meines anderen Problems. Jetzt scheint es so zu funktionieren, wie es soll. Vielen besten Dank. :P Und ich habe mir jetzt erstmal eine Zigarette verdient.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon Luckie » Do 28. Mai 2009, 13:55

Aber könntets du mir bitte noch mal genau erklären was im model passiert?
Code: Alles auswählen

        'username' => array
        (
            'notEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Pflichtfeld'
            )
        )
 

Also diese Regeln.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon dth33 » Mo 3. Aug 2009, 21:06

@euromark

aber das "required" genauso wie "allowEmpty" haben jeweils ihren zweck
würde ich nun aber eher model-bezogen sehen, und weniger formular-bezogen

insofern mag es machmal sinn machen es zu verwenden
ich meinte nur, dass dabei vorsicht abgebracht ist, wenn man eben z.b. teile des datensatzes editieren möchte (weil das ist dann so ohne weiteres nicht mehr möglich).


Das "required" bringt mich nun tatsächlich bald um den Verstand. Tatsächlich können Teile eines Datensatzes nun nicht editiert werden. Nun gut, ich lerne jeden Tag dazu. Mein User-Model besteht nicht nur aus username und passwort, sondern darüber hinaus auch aus name, email etc. Wenn ein User neu angelegt werden soll, ist das Feld "username" required. Will der User später sein Profil ändern (z.B. das Passwort), soll das Feld Username natürlich unangetastet bleiben. leider geht das mit dem achso tollen "required" nicht. Mal sehen wie ich das jetzt löse. Vielleicht mit irgendwelchen Hidden-Fields im Formular. Hauptsache, die Daten stehen hinterher in $this->data. Vielleicht wäre es in späteren Versionen mal möglich, die Validierung auf einzelne Felder einzuschränken. Immer das ganze $this->data ist echt heftig.

Grüße Steffen
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon euromark » Di 4. Aug 2009, 11:38

genau deswegen hab ich die warnung ausgesprochen
auch ich habe damals das erst nicht verstanden

deswegen: KEIN required im model (da dies dort eben eine andere bedeutung hat)
einfach das notEmpty benutzen als regel
wenn das feld vorhanden ist, darf es nicht leer sein - ansonsten darf es das
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: validierung der Eingabedaten funktioniert nicht

Beitragvon dth33 » Di 4. Aug 2009, 17:12

Meine Lösung:

$this->User->validate = Set::merge ($this->User->validate, array( ............. ));


Damit kann man die Validierung per Controller überschreiben, also auch das "required" nach Bedarf anpassen. Ok das ist was für Bastler und nicht sehr sauber.

Geholfen hat:
http://teknoid.wordpress.com/2008/09/22/setmerge-and-dynamic-validation-rules/
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Vorherige

Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste