codeigniter:用于加载视图和处理提交数据的控制器函数

时间:2013-03-11 06:22:10

标签: php codeigniter

即使多次访问文档后,我在理解控制器利用率方面也存在差距。我有以下内容:

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()函数应加载视图。但是在完成表格并提交之后,我应该提交哪个功能?这是否意味着我必须为每个功能创建两个函数,一个用于加载视图(register.php),另一个用于处理该函数的操作(enroll_user)?

2 个答案:

答案 0 :(得分:3)

你可以一次性完成这项工作

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());  

答案 1 :(得分:1)

在您的register.php中,将表单的操作设置为memebership / enroll_user,这样当用户提交注册表单时,操作将被提交到enroll_user函数,它将负责注册等。

您需要两个功能,一个用于显示注册表单,另一个用于处理提交的数据。您可以使用一个控制器来完成它,但是它的良好做法是在两个控制器中完成它,因为您可以更容易地找出以后执行哪个功能。