2

我正在尝试将 POST 值发送到控制器,然后将其传递给 PHP 中的模型,但我不确定如何去做。

控制器的这一部分是查看用户是否请求类似?action=game. 这行得通。

但我正在尝试修改它以允许$_POST将其发送到它,然后再发送到模型。

function __construct()
{
    if(isset($_GET['action']) && $_GET['action']!="" )
     {
         $url_view = str_replace("action/","",$_GET['action']);
         if(file_exists("views/" . $url_view . ".php" ))
         {
                $viewname = $url_view;
                $this->get_view($viewname . ".php");
          }
          else
          {
               $this->get_view('error.php');
          }
     } 
     else 
     {
         $this->get_view('home.php');
     }  
}

这就是我得到的。在注册表单页面中,表单的动作是?process=register但是不起作用。

if(isset($_POST['process']) == 'register)
{
    $this->get_view('register.php')
}

get_view 函数确定要与视图绑定的模型

function get_view($view_name)
{
    $method_name = str_replace(".php","",$view_name);
    if(method_exists($this->model,$method_name))
    {
       $data = $this->model->$method_name();
    } else {
      $data = $this->model->no_model();
    }
      $this->load->view($view_name,$data);
}
4

1 回答 1

4

由于您的形式的动作是?process=register, thenprocess仍然在$_GET超全局中。你可以做些什么来让它使用 post 是添加一个包含进程的隐藏输入字段。

有了这个:

<form method="post" action="script.php?process=register">

表格是 POST'ed 到的,script.php?process=register所以你有$_GET['process']不是 $_POST['process']

试试这个:

<form method="post" action="script.php">
<input type="hidden" name="process" action="register" />

拥有$_POST['process']. 或者,您可以将“过程”保留在 GET 中,并将 if 语句切换为 check$_GET而不是$_POST.

于 2012-05-24T22:59:52.803 回答