如何使用Kohana 3.1 ORM验证电子邮件

时间:2011-07-24 02:42:31

标签: php validation kohana-3 kohana-orm

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

模型中,我有以下简单规则:

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

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

1 个答案:

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

它有点干净切割和明确。那么你对电子邮件是否设置一直没有任何困惑,所以你知道开始寻找其他地方。 只是一个想法。