2012-05-24 73 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

相关问题