1

我将 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_emailorconfirm_email字段,验证将不会触发匹配规则。如果我让它们required,那么没有这些字段的后端会触发confirm_emailand confirm_password,但它不应该。

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

我很感激任何想法。谢谢

4

1 回答 1

0

你有最新版本的ORM Mapper吗,根据文档可以添加非数据库字段。

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

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

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

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

于 2012-12-01T02:29:55.870 回答