即使多次访问文档后,我在理解控制器利用率方面也存在差距。我有以下内容:
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)?
答案 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函数,它将负责注册等。
您需要两个功能,一个用于显示注册表单,另一个用于处理提交的数据。您可以使用一个控制器来完成它,但是它的良好做法是在两个控制器中完成它,因为您可以更容易地找出以后执行哪个功能。