2

我正在尝试在 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>

任何帮助都会非常有帮助。

4

3 回答 3

2

如果您真的想使用 MVC 模型视图控制器而不是我建议您使用 codeigniter,一切都定义明确且易于使用,请访问 codeigniter 的官方网站。 http://ellislab.com/codeigniter。我希望你会喜欢使用 codeigniter 尝试它并摆脱大量的编码。

于 2013-09-04T13:02:00.503 回答
1

$_GET 和 $_POST 超全局变量已经是提交表单数据的数组,因此您可以在控制器中简单地使用它们。只需将表单直接提交给控制器文件:这样更简洁,无需传递 $_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 帮助器类,当然您可以对此进行扩展。或者更好的是,节省一些额外的工作并使用一个众所周知的框架,比如你的项目中提到的那些:)

于 2013-09-04T12:52:53.827 回答
0

首先,为什么要使用 $_GET?

其次,$_GET 是一个全局变量,它应该在系统使用的任何类中都可用(不管它是否在另一个文件中)。

否则,如果您出于某种原因想要这样做,您可以简单地将它们传递给类的方法:

...

$controller->submitButtonClicked($_GET);

...
于 2013-09-04T12:44:30.833 回答