簡體   English   中英

PHP MVC將表單值傳遞給控制器​​和模型

[英]PHP MVC passing form values to controller and model

我正在嘗試將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);
}

由於表單的操作是?process=register ,因此process仍在$_GET超全局變量中。 要使它使用post,您可以做的是添加一個包含進程的隱藏輸入字段。

有了這個:

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

該表單已過POST到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語句切換為檢查$_GET而不是$_POST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM