2012-05-24 108 views
2

我試圖將POST值發送到控制器,然後將它傳遞給PHP中的模型,但我不知道如何去做這件事。PHP MVC將形式值傳遞給控制器​​和模型

控制器的這一部分是查看用戶是否請求像?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功能決定了模型視圖

+0

你錯過了if(isset($ _ POST ['process'])=='register)中的結尾單引號 – Kristian

回答

4

由於您的表單的動作結合爲?process=register,然後process仍處於$_GET超全局。你可以做什麼使它使用後期是添加一個隱藏的輸入字段包含進程。

有了這個:

<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語句以檢查$_GET而不是$_POST

+0

謝謝。但我似乎無法得到它的工作。當我在註冊表中發佈到控制器時,它只是進入一個空白頁面,即使當我放入一個視圖名稱來測試 – user1365708

+0

空白頁面意味着你的腳本中有一個致命的錯誤,很可能是缺少的'''其他人提到。如果你打開PHP設置'display_errors',你可以看到實際的錯誤。 – drew010

相關問題