在CodeIgniter中处理表单数据的最佳实践是什么?

时间:2017-02-09 12:32:34

标签: php forms controller codeigniter-3

我正在CodeIgniter中开发一个新的应用程序。我已经在CI中开发了一些应用程序。在我之前的所有应用程序中,我曾经处理过类似下面的表单:

我的控制器:My_controller.php

class My_controller extends CI_Controller {
  public function __construct()
  {
    parent::__construct();
    $this->load->model('my_model');
  }
  public function sign_up()
  {
    $this->load->view('sign_up');
  }
  public function do_sign_up()
  {
    $this->form_validation->set_rules('');
    $this->form_validation->set_rules('');
    if($this->form_validation->run() == false)
    {
      $this->load->view('sign_up');
    }
    else
    {
      $this->my_model->insert_user();
      $data['message'] = "Signup Successful";
      $this->load->view('sign_up', $data);
    }
  }

我的观点:sign_up.php

<html>
<head></head>
<body>
 <?php echo form_open("my_controller/do_sign_up"); ?>

  form elements comes here.....
  ...............................

 <?php echo form_close(); ?>
</body>
</html>

我怀疑是2种方法sign_up()&amp;控制器中需要do_sign_up()来处理一个sign_up表单。如果我编写这样的代码来处理每个表单,那么控制器中的方法数量将会增加。这是对的吗?或者还有其他方法吗?有人可以帮我吗?提前谢谢。

3 个答案:

答案 0 :(得分:0)

你一定可以使用一个功能。像下面的东西。

 public function sign_up()
 {
   if ($this->input->post()) {
      $this->form_validation->set_rules('');
      $this->form_validation->set_rules('');
      if($this->form_validation->run() == false)
      {
         $this->load->view('sign_up');
      }
      else
      {
         $this->my_model->insert_user();
         $data['message'] = "Signup Successful";
         $this->load->view('sign_up', $data);
      }
   }else{
      $this->load->view('sign_up');
   }

}

试一试。

答案 1 :(得分:0)

你也可以这样设置

    public function registre()
{


$this->form_validation->set_rules('email','EMAIL','trim|required|valid_email');

if($this->form_validation->run()==FALSE)
    {
        echo validation_errors();
        $this->load->view('sign_up');//load page
   or you can      redirect('welcome/index');//also redirect
    }
    else{
        $data=array(
            'email'=>$this->input->post('email')
            );

           $this->welcome_model->registre($data);


        echo "<div class='alert'>Inscription success</div>";
        redirect('welcome/index');
    }
}

我认为遵循文档是最佳做法https://www.codeigniter.com/userguide3/libraries/form_validation.html#form-validation-tutorial

答案 2 :(得分:0)

我认为在CodeIgniter中处理数据的最佳实践(对于所有其他框架也是如此)

1.将值赋值给控制器中的变量

2.从那些变量

初始化数组

3.使用codeigniter表单验证来验证用户输入      (应该进行至少类型和长度验证)

4.如果需要,使用回调进行用户定义的验证

5.还要对返回的所有数据执行isset()和!empty()方法调用    表单函数(这将检查数据变量是否已设置或已设置    空值)

6.对于前端验证(客户端验证),我们可以使用html    或者jquery validation.Code可见性是主要的缺点    对于后端(服务器端)验证,大多数时候我们使用模块和    相应框架支持的库

7.Better编程实践具有前端和后端验证