我是CodeIgniter的新手,我有一个关于准备/净化/操作输入字段的问题。当我说“准备/净化/操纵”字段时,我的意思是:
如果用户未输入整数字段(留空),如果用户点击“提交”,则应将其设置为NULL。即。 $ this-> input-> post('integer_field')应该是NULL而不是''(空字符串),这样在将数据保存到数据库时,它不会导致任何MySQL错误
例如http://ellislab.com/forums/member/edit_userpass是一个允许您设置屏幕名称,更改密码的表单(仅当您输入新密码并确认新密码时)。在不更改密码的情况下提交此表单时,$ this-> input-> post('password')和$ this-> input-> post('password_confirm')将为''(空字符串)。很明显,当使用模型保存到数据库时,不应将这两个字段插入到数据库中,并且它们都需要取消设置。
所以,我正在尝试找出执行上述任务的最佳位置,我认为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不是合适的文件,应该使用哪个文件来准备/净化/操作字段?
答案 0 :(得分:0)
$integer_field = $this->input->post(‘integer_field’, TRUE) ;
if ( $integer_field == '') { $integer_field = NULL ; }
验证规则的配置很棒但是 - 让你的表单先工作,然后在你知道它的工作时重构。你可以在我喜欢的模型中进行表单验证。我还建议有一个单独的方法,为插入或更新构建特定的数组。那么你可以使用非常简单的插入和更新方法来获取任何数组。