1

我在 Kohana ORM 中验证模型时遇到问题,它应该抛出 ORM_Validation_Exception,但是它没有。我正在尝试验证电子邮件地址。

型号_电子邮件地址

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,这是应该的。

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

4

2 回答 2

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),
于 2012-04-11T09:04:13.387 回答
0

哎呀..如何使用:

 'email' insert  'Valid::email'

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

于 2012-04-10T12:45:40.853 回答