[英]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.