Validierung funktioniert nicht wie sie soll

Datenbankobjekte strukturieren und validieren

Validierung funktioniert nicht wie sie soll

Beitragvon getit am Do 1. Jan 2009, 12:03

Hallo,

habe eine Formular:

Code: Alles auswählen

<?php
echo $form->create('Job');
echo $form->input('company');
echo $form->input('title');
echo $form->input('description');
echo $form->end('Speichern');
echo $html->link('zurück', array(
    'controller'    =>  'jobs',
    'action'        =>  'index'
));
?>
 


und folgende Methode dazu im Controller
Code: Alles auswählen

function add() {
        pr($this->data);        //NUR FÜR TESTZWECKE
    if (!empty($this->data)) {
        $this->Job->create();
        if ($this->Job->save($this->data)) {
            $this->Session->setFlash('Der Job wurde gespeichert.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('Der Job konnte nicht angelegt werden.');
        }
    }
}
 


Ohne eine Validierung der Formularfelder im Model klappt das sehr gut.
Jetzt habe ich aber noch folgende Validierung im Model hinzugefügt:
Code: Alles auswählen

var $validate = array(
    'title' =>  array(
        'rule'      =>  false,
        'required'  =>  true,
        'message'   =>  'Bitte geben Sie einen Titel für das Jobangebot ein.'
    ),
);
 


Jetzt kann ich nichts mehr speichern :?:

Erhalte immer die im Validator angegeben Meldung ('Bitte geben Sie...') unterhalb des Formularfelds und von cake die folgende Meldung 'Warning (2): preg_match() [function.preg-match]: Empty regular expression [CORE\cake\libs\model\model.php, line 2413]'

:!: Ich möchte nochmals betonen, dass alle Felder im Formular ausgefüllt sind (sehe ich auch durch das pr(), das ich zu Testzwecken in die add() des Controllers mit rein hab) :!:

Lasse ich die 'rule' im Validate-Array weg
Code: Alles auswählen

var $validate = array(
    'title' =>  array(
        'required'  =>  true,
        'message'   =>  'Bitte geben Sie einen Titel für das Jobangebot ein.'
    ),
);
 

erhalte ich folgende Fehlermeldung: 'Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE\cake\libs\model\model.php, line 2413]'

Wieso kann ich keine neuen Jobs mehr anlegen?
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Validierung funktioniert nicht wie sie soll

Beitragvon Mathias am Do 1. Jan 2009, 12:42

Hmm die Fehlermeldung sagt, dass title nicht alphanumerisch sein darf.
Dann würde ich einfach versuchen, in der rule festzulegen, dass es alphanumerisch sein muss:
Code: Alles auswählen
'rule' => 'alphaNumeric'


Hier noch was ausm cookbook
The 'rule' key is required. If you only set 'required' => true, the form validation will not function correctly. This is because 'required' is not actually a rule.

Also du musst rule immer einen Wert geben wie z.b. alphaNumeric. In cake integrierte rules sollten dir da weiterhelfen. Die Seiten davor sind auch noch sehr hilfreich, wenn du mehrere Regeln für ein Feld definieren möchtest.
cheers
Benutzeravatar
Mathias
 
Beiträge: 184
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.3
OS: OS X 10.6.x


Zurück zu Models

Wer ist online?

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