2013-03-11 54 views
1

即使在多次访问文档后,我仍然在理解控制器利用率方面存在差距。我有以下几点: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.php),另一个用于处理该函数(enroll_user)的操作?

+0

耶显然你需要做的像只.......... .. – 2013-03-11 06:36:31

+0

我会将注册页面提交给自己。如果成功,请在进入其他功能/页面之前进行所有验证。 – Jeemusu 2013-03-11 06:37:03

回答

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

这是非常好的方法。我更喜欢有一个函数处理这两个功能。谢谢 – 2013-03-11 06:54:14

+0

不客气!再看到答案 – 2013-03-11 06:55:21

+0

+1 @raheelshan简单和简短的答案。 – 2013-03-11 07:03:15

1

在您的register.php把形式memebership/enroll_user的作用,所以当用户提交注册表单动作将所需提交enroll_user功能,很会照顾登记等

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

相关问题