MVC表单数据提交给控制器

时间:2013-04-06 19:03:13

标签: php forms model-view-controller

我正在设法部署一个非常简单的实现,包含注册表单,为了演示目的,我选择使用MVC模式。

我的一个小问题是,当我按下提交按钮时,我希望通过适当的控制器方法处理提交的数据。

例如:

在视图部分中,我声明了这样的形式:

<form action="controller/validate" method="post"/>

我假设这是与路由相关的事情,但我很好奇是否可以建议另一种方式。

-

此致

西奥

2 个答案:

答案 0 :(得分:3)

路由器可以像switch语句一样简单,而不是小型站点的完整路由器:

switch($_SERVER['REQUEST_URI']) {
    case 'controller/validate':
        $view = new \Views\User\Registration();
        $controller = new \Controllers\UserRegistration($view);
        $method = 'validate';
        break;

    default:
        $view = new \Views\Error\NotFound();
        $controller = new \Controllers\Error($view);
        $method = 'notFound';
        break;
}

echo $controller->$method();

另请注意,您不必根据当前路径执行相对URL,而是经常要对文档根目录执行相对URL:

<form action="/controller/validate" method="post"/>

注意前导斜杠。

上面只是一个简单的(未经测试的)半伪代码示例

答案 1 :(得分:0)

通常,您可以通过路径(例如POST /register)访问控制器。在引导程序文件中为此路由分配控制器操作。一些伪代码:

$framework->route('GET', '/register',
                  'RegistrationController::action_form');
$framework->route('POST', '/register',
                  'RegistrationController::action_submit');

另一个方法是将路由直接映射到控制器(一些框架这样做,我相信 Kohana 就是其中之一),如下所示:

  • 路线:/register/submit
  • 解析为:RegisterContoller::action_submit()
  • 在操作方法中管理请求方法(标准HTTP中的GETPOSTPUTDELETE)。