我正在尝试在php中学习mvc框架,但后来我找不到将表单数据传递到另一个php页面中的php函数的方法。我正在提交表单并在同一页面中接收它,然后我试图将表单数据传递给控制器函数,该函数将处理验证。我无法弄清楚如何将表单数据传递给其他函数。
我可以将每个数据作为参数传递,但如果表单中有大量数据,则会很长。我想知道我是否可以将表单作为对象(类似于我们传递结构对象)传递给另一个函数,然后适当地使用数据。我在下面放了一个代码模块:
<?php
include('controller.php');
$controller = new Controller($model);
if (isset($_GET['formButton']))
$controller->submitButtonClicked();
?>
<form name="details" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="txt1">First Name:</label>
<input type="text" name="txt1" id="txt1"/>
<label for="password">Password:</label>
<input type="password" name="password" id="password"/>
<input type="submit" name="formButton" id="formButton" value="Submit"/>
</form>
任何帮助都会非常有帮助。
答案 0 :(得分:2)
如果你真的想使用MVC模型视图控制器比我建议你的codeigniter一切都很好定义易于使用访问codeigniter的官方网站。 http://ellislab.com/codeigniter。 我希望你能与codeigniter合作尝试并摆脱很多编码。
答案 1 :(得分:1)
$ _GET和$ _POST superglobals已经是提交的表单数据的数组,因此您可以在控制器中使用它们。只需将表单直接提交给控制器文件:这个更干净,没有必要传递$ _GET或$ _POST(你应该使用post,但我不知道上下文)。
我假设你是从头开始构建自己的MVC。如果是这样,你可以做一个每个表单提交的handler.php控制器。这可以像这样循环发布的数据:
// define Input class somewhere and include
$input = new Input();
foreach($_POST as $field => $value)
{
$input->$field = $this->validate($value);
}
在validate()中,您将进行一些常规验证。然后,您可以在需要输入数据的任何地方使用此新的Input对象。这是一个非常原始的例子,说明CodeIgniter和Laravel之类的预制框架如何使用Input辅助类,当然你可以对此进行扩展。或者更好的是,节省一些额外的工作并利用项目中提到的众所周知的框架:)
答案 2 :(得分:0)
首先,你为什么要使用$ _GET?
其次,$ _GET是一个全局的,它应该在您的系统使用的任何类中都可用(如果它在另一个文件中,则无关紧要)。
否则,你可以简单地将它们传递给类的方法,如果你想出于某种原因这样做:
...
$controller->submitButtonClicked($_GET);
...