你在form_validation之后发布输入值吗?

时间:2011-05-08 19:58:59

标签: php mysql codeigniter

Codeigniter问题:

我刚刚使用$ this-> form_validation-> set_rules(等等)设置我的第一个表单,在验证运行后,我应该使用$ email = $ this-> input->来发布值。发布('email',TRUE);或者表单验证是否已经发布了值?如果是这样 - 我如何返回这些值?

谢谢, 助行

3 个答案:

答案 0 :(得分:2)

执行验证后,$_POST数组中的值仍然存在,因此根据您的应用和您的需求,您可能需要也可能不需要将它们分配给变量。

扩展 - 如果你要进行进一步的处理,那么最好做$email = $this->input->post('email');,但你也可以将整个$ _POST数组传递给模型,例如,无需进行任何额外的输入 -

$this->my_model->do_something($this->input->post())

视课程要求而定。

答案 1 :(得分:1)

input-> post表示PHP中$ _POST超全局数组中的任何内容。这是在Codeigniter对您的脚本执行任何操作之前设置的 - 这也意味着Codeigniter从$ _POST填充input-> post。因此,当您“发布”值时,您只需提交一个方法设置为POST的表单。合理?

从那里CI_Controller类处理其余部分,您应该能够在验证之前,期间或之后的任何时间访问input-> post。

答案 2 :(得分:1)

是的 - 你是对的。

Yout想要使用以下语法检索帖子值:

从表单处理更新数据的简单方法是:

// the if syntax is incorrect, i forget the exact wording
if ($this->form->valid()){
   $updateData = array(
      'email' => $this->input->post('email'),
      'username' => $this->input->post('username'),
      'password' => $this->input->post('password')
   );
   // check uniqueness of email
   $this->db->where('email', $updateData['email']);
   $uniqueQuery = $this->db->get('accounts');
   if ($uniqueQuery->num_rows() == 0){
       $this->db->insert('accounts', $updateData);
   }
}