验证模型值不会引发异常

时间:2012-04-10 11:28:09

标签: php kohana

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

此示例应将包含错误的数组转储到屏幕上,而只是保存电子邮件地址而不再发出通知。

当我将'Valid :: email'更改为'not_empty'时,它会抛出异常。经过一些调试后,我发现Valid :: email按原样返回false。

编辑:正如有些人所说,将'有效::电子邮件'更改为'电子邮件'并没有帮助。此外,当我在电子邮件方法中放置一个退出时,脚本执行将停止。

2 个答案:

答案 0 :(得分:1)

经过一些繁重的调试后,我发现Kohana验证类包含了一个与php 5.3.3结合的错误。它应该有效,但事实并非如此。

在Kohana_Validation :: check()

更改

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

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

在Kohana_Validation :: errors()

更改

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

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

答案 1 :(得分:0)

oop ..如何使用:

 'email' insert  'Valid::email'

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