CodeIgniter - 哪个文件可用于prepp / purify /操作输入数据?

时间:2014-03-07 21:35:03

标签: codeigniter codeigniter-2

我是CodeIgniter的新手,我有一个关于准备/净化/操作输入字段的问题。当我说“准备/净化/操纵”字段时,我的意思是:

  1. 如果用户未输入整数字段(留空),如果用户点击“提交”,则应将其设置为NULL。即。 $ this-> input-> post('integer_field')应该是NULL而不是''(空字符串),这样在将数据保存到数据库时,它不会导致任何MySQL错误

  2. 例如http://ellislab.com/forums/member/edit_userpass是一个允许您设置屏幕名称,更改密码的表单(仅当您输入新密码并确认新密码时)。在不更改密码的情况下提交此表单时,$ this-> input-> post('password')和$ this-> input-> post('password_confirm')将为''(空字符串)。很明显,当使用模型保存到数据库时,不应将这两个字段插入到数据库中,并且它们都需要取消设置。

  3. 所以,我正在尝试找出执行上述任务的最佳位置,我认为config / form_validation.php将是最好的地方(form_validation可以验证字段和准备字段。而不是调用form_validation->在控制器中运行我想将所有验证放在一个地方,即config / form_validation.php),但是我有一些顾虑:

    • 根据我对system / library / Form_validation.php的理解,如果任何字段为空并且不是“必需”字段,则不会在任何字段上调用规则。那么如果不需要整数字段,我如何执行#1?

    • 对于#2,我想我需要使用“回调”才能取消设置$ this-> input-> post('password')和$ this-> input-> post ('password_confirm')然而,它会搞砸Form_validation.php中的任何代码

    另外如果您认为config / form_validation.php不是合适的文件,应该使用哪个文件来准备/净化/操作字段?

1 个答案:

答案 0 :(得分:0)

 $integer_field = $this->input->post(‘integer_field’, TRUE) ; 

 if ( $integer_field == '') { $integer_field = NULL ;  } 

验证规则的配置很棒但是 - 让你的表单先工作,然后在你知道它的工作时重构。你可以在我喜欢的模型中进行表单验证。我还建议有一个单独的方法,为插入或更新构建特定的数组。那么你可以使用非常简单的插入和更新方法来获取任何数组。