我正在使用Kohana 3.1框架使用Kohana的ORM
和Validation
内置类进行简单验证。我们来看看代码......
在模型中,我有以下简单规则:
public function rules()
{
return array(
'first_name' => array(
array('not_empty'),
),
'email' => array(
array('not_empty'),
array('email'),
),
);
}
然后在控制器中我尝试验证并使用经典try ... catch
构造保存对象:
try
{
$t = array(
'first_name'=>'pippo',
'email'=>'foo@foo.com',
);
ORM::factory('customer')->values($t)->save();
}
catch ( ORM_Validation_Exception $e )
{
die(Debug::vars($e->errors('')));
}
现在上面的$t
数组应该验证,但事实并非如此。它会抛出一个异常而死于调用Debug::vars
并打印此错误:
array(1) (
"email" => string(23) "email must not be empty"
)
显然不是这样,我做错了什么?
答案 0 :(得分:1)
那你有没有排序呢?
而不是:
$t = array(
'first_name'=>'pippo',
'email'=>'foo@foo.com',
);
ORM::factory('customer')->values($t)->save();
你为什么不试试:
$customer = ORM::factory('customer');
$customer->first_name = 'pippo';
$customer->email = 'foo@foo.com';
$customer->save();
它有点干净切割和明确。那么你对电子邮件是否设置一直没有任何困惑,所以你知道开始寻找其他地方。 只是一个想法。