2012-04-10 2 views
1

Ich habe ein Problem mit der Validierung von Modellen in Kohana ORM, es sollte eine ORM_Validation_Exception auslösen, tut dies jedoch nicht. Ich versuche eine E-Mail-Adresse zu bestätigen.Das Validieren von Modellwerten löst keine Ausnahme aus

Model_Emailaddress

public function rules() 
{ 
    return array(
     'emailaddress' => array(
      array(
       'Valid::email' 
      ), 
     ), 
    ); 
} 

Controller_Test

public function action_valid() 
    { 
     $email = ORM::factory('emailaddress'); 

     $email->emailaddress = 'test'; 

     try 
     { 
      $email->create(); 

     } 
     catch(ORM_Validation_Exception $e) 
     { 
      echo Debug::dump($e->errors()); 
     } 
    } 

Dieses Beispiel ein Array mit Fehlern auf den Bildschirm werfen sollte, sondern es spart nur die E-Mailadresse ohne weitere Hinweise.

Wenn ich 'Valid :: email' in 'not_empty' ändere, wird eine Ausnahme ausgelöst. Nach einigen Debugging entdeckte ich, dass Valid :: E-Mail, wie es sollte, false zurückgibt.

EDIT: Wie einige Leute sagten, hilft die Änderung von "Gültig :: E-Mail" zu "E-Mail" nicht. Wenn ich einen Exit in die E-Mail-Methode setze, wird die Ausführung des Skripts gestoppt.

Antwort

1

Nach einigen schweren, schweren Debuggen ich, dass die Validierung Klasse Kohana entdeckt einen Fehler in Kombination enthält mit php 5.3.3. Es sollte funktionieren, tut es aber nicht.

In Kohana_Validation :: check()

ändern

$data[$field] = Arr::get($this, $field); 

Um

$data[$field] = Arr::get($this->_data, $field); 

In Kohana_Validation :: Fehler()

ändern

':value' => Arr::get($this, $field), 

Um

':value' => Arr::get($this->_data, $field), 
0

oop .. wie wäre es gerade Nutzung:

'email' insert 'Valid::email' 

bessere Nutzung save() Methode :)

+0

Diese Lösung funktioniert nicht – LHolleman