2012-04-10 90 views
1

我有一个问题,在Kohana的ORM验证模型,它应该抛出一个ORM_Validation_Exception,然而,事实并非如此。我正在尝试验证电子邮件地址。验证模型值不会抛出异常

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()); 
     } 
    } 

这个例子应该转储有错误到屏幕的数组,而是它只是保存没有进一步通知的EMAILADDRESS。

当我改变“有效::电子邮件”到“not_empty”,它抛出一个异常。经过一些调试后,我发现Valid :: email返回false,因为它应该。

编辑:至于有些人说,改变“有效::电子邮件”到“电子邮件”没有帮助。另外,当我在电子邮件方法中放置一个退出时,脚本执行将会停止。

回答

1

有些沉重,沉重的调试我发现Kohana的验证类同时含有的错误后, PHP 5.3.3。它应该可以工作,但它不会。

在Kohana_Validation ::检查()

变化

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

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

在Kohana_Validation ::错误()

变化

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

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

接力..如何只使用:

'email' insert 'Valid::email' 

更好的使用save()方法:)

+0

此解决方案不起作用 – LHolleman 2012-04-10 13:12:10