我正在使用CodeIgniter 2和DataMapper ORM。
对于用户,我有confirm_password
和confirm_email
个字段(以及其他字段),这两个字段都不是数据库中的字段(表users
没有这些字段),但它只是在那里显示在注册表格上:
我还有后端,这两个字段(confirm_password
和confirm_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_email
或confirm_email
字段 ,则验证程序不会触发匹配规则。
如果我将它们需要,那么没有这些字段的后端会触发confirm_email
和confirm_password
,但不应该触发。{/ p>
confirm_email
数组的$validation
索引
后端?我很感激任何想法。 感谢
答案 0 :(得分:0)
您是否拥有最新版本的ORM Mapper,根据您可以添加非数据库字段的文档。
http://stensi.com/datamapper/pages/validation.html
此外,您现在可以为非数据库表字段添加验证规则, 例如“确认电子邮件地址”或“确认密码”。例如:
并且您不需要确认字段的必需规则 - 因为它们表明在DB中需要归档,因此DB错误), - 匹配属性将对匹配的字段执行必需的验证(例如,如果它不匹配则会抛出错误。)换句话说,您只需要在'email'字段中输入,如果提交,confirm_email将抛出错误不匹配。在空白字段中,您确实需要显示该电子邮件是必需的。
最后 - 您可以删除索引,但通常这不是个好主意。相反,如果上面的失败,我会在控制器中添加表单验证规则。