如果在CI中的一个控制器中有2个表单(2个提交按钮)的条件

时间:2013-01-04 09:01:05

标签: codeigniter

我有一个控制器 auth ,有两种方法登录并注册。

它运作良好。

但是,我需要另一个名为 login_and_register 的函数,它将具有一个if条件,用于确定将执行哪个部分。如果登录部分(基本上来自登录方法的代码)或注册部分(来自注册方法的代码)。

if条件应该是检查单击了哪个提交按钮。

但问题出在这里。

我需要两个表单(登录和注册)的form_open保持这样:

<?php echo form_open('auth/login_and_register'); ?>

这不能改为例如auth / login_and_register_log或auth / login_and_register_reg或auth / login_and_register / log或auth / login_and_register / reg等。

登录和注册表单在同一视图中,按下提交后,auth控制器中的此函数login_and_register被执行。

我认为我可以根据提交值的名称制作if条件,因为对于登录表单,它被称为 submitlog ,对于注册表单,它被称为 submitreg

所以,也许是这样的:

if( isset($this->form_validation->set_value('submitlog')) ) {
   //code for login part
}
elseif ( isset($this->form_validation->set_value('submitreg')) ) {
   //code for registration part
}
else {
   //code for redirect to homepage
}

但它不起作用。知道为什么吗?

2 个答案:

答案 0 :(得分:2)

查询提交按钮名称是个好主意。这是一段有用的代码:

if ($this->input->post("submitlog") !== false) {
    //code for login part
} elseif ($this->input->post("submitreg") !== false) {
    //code for registration part
} else {
    //code for redirect
}

答案 1 :(得分:1)

而不是那样,您可以使用相应表单名称的值在两个表单中保留一个隐藏字段。在控制器中,您可以检查此字段值并确定提交的表单。然后你可以重定向到所需的功能..