1

我正在使用 Kohana 3.1 框架使用 KohanaORMValidation内置类进行简单验证。让我们看看代码...

模型中,我有这些简单的规则:

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"
)

这显然不是真的,我做错了什么?

4

1 回答 1

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

它更简洁明了。那么你就不会对是否设置了电子邮件有任何困惑,所以你知道从哪里开始寻找其他地方。只是一个想法。

于 2011-08-01T20:32:01.697 回答