我在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。
编辑:正如有些人所说,将'有效::电子邮件'更改为'电子邮件'并没有帮助。此外,当我在电子邮件方法中放置一个退出时,脚本执行将停止。答案 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()方法:)