Codeigniter:加载视图和处理提交数据的控制器功能


codeigniter: controller function to load view and process data submitted

即使在多次访问文档之后,我对控制器使用的理解仍然存在差距。我有以下内容:

class Membership extends CI_Controller 
{

    /*Load the login view first assuming user is member*/
    public function index()
    {
        $this->load->view('login');
    }
    /*if not member, load register view*/
    public function register()
    {
        $this->load->view('register');
    }
    /*view to recover user credentials*/
    public function recover()
    {
        $this->load->view('recover');
    }
    public function enroll_user()
    {
        /*Retrieve post parameters*/
        $fullname = $this->input->post('fullname');
        $email = $this->input->post('email');
        $mobile = $this->input->post('mobile');
        $home = $this->input->post('home');
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $confirmPassword = $this->input->post('cpassword');
    }
}
当用户点击主页上的Register now链接时,Register()函数应该加载视图。但是他填好表格提交后,我应该提交给哪个功能呢?这是否意味着我必须为每个功能创建两个函数,一个用于加载视图(register.php),另一个用于处理该函数的操作(enroll_user)?

你可以一次完成

public function register()
{
    $post = $this->input->post();
    if($post){
        // do other stuff here
        // you can load view here too if validation fails
    }else{
        $this->load->view('register');
    }
}

在你的表单中使用这个

echo form_open(current_url());  

在register.php中,将表单的操作提交到membership/enrollment _user,这样当用户提交注册表单时,操作将提交到enrollment _user函数,它将负责注册等。

您需要两个函数,一个用于显示注册表单,另一个用于处理提交的数据。你可以用一个控制器来做,但最好是用两个控制器来做,因为这样你以后会更容易发现哪个函数在做什么。