CodeIgniter 2,DataMapper验证规则

时间:2012-11-30 20:24:06

标签: php codeigniter validation codeigniter-datamapper

我正在使用CodeIgniter 2和DataMapper ORM。 对于用户,我有confirm_passwordconfirm_email个字段(以及其他字段),这两个字段都不是数据库中的字段(表users没有这些字段),但它只是在那里显示在注册表格上:

我还有后端,这两个字段(confirm_passwordconfirm_email)在表单中不存在。

public $validation = array(
'first_name' => array(
    'label' => 'lang:common_first_name',
    'rules' => array('required', 'trim')
),
'last_name' => array(
    'label' => 'lang:common_last_name',
    'rules' => array('trim')
),
'email' => array(
    'label' => 'lang:common_email',
    'rules' => array('required', 'trim', 'unique', 'valid_email')
),
'confirm_email' => array(
    'label' => 'lang:common_confirm_email',
    'rules' => array('matches' => 'email')
),
'password' => array(
    'label' => 'lang:common_password',
    'rules' => array('required', 'min_length' => 6, 'encrypt')
),
'confirm_password' => array(
    'label' => 'lang:common_confirm_password',
    'rules' => array('matches' => 'password')
)

);

如果我没有要求confirm_emailconfirm_email字段 ,则验证程序不会触发匹配规则。 如果我将它们需要,那么没有这些字段的后端会触发confirm_emailconfirm_password,但不应该触发。{/ p>

  • 最好是在应用程序中包含我们可能拥有的所有可能的验证规则(在模型中)吗?
  • 在控制器中更改这些规则是个好主意(比如删除 添加用户时,confirm_email数组的$validation索引 后端?

我很感激任何想法。 感谢

1 个答案:

答案 0 :(得分:0)

您是否拥有最新版本的ORM Mapper,根据您可以添加非数据库字段的文档。

http://stensi.com/datamapper/pages/validation.html

  

此外,您现在可以为非数据库表字段添加验证规则,   例如“确认电子邮件地址”或“确认密码”。例如:

并且您不需要确认字段的必需规则 - 因为它们表明在DB中需要归档,因此DB错误), - 匹配属性将对匹配的字段执行必需的验证(例如,如果它不匹配则会抛出错误。)换句话说,您只需要在'email'字段中输入,如果提交,confirm_email将抛出错误不匹配。在空白字段中,您确实需要显示该电子邮件是必需的。

最后 - 您可以删除索引,但通常这不是个好主意。相反,如果上面的失败,我会在控制器中添加表单验证规则。