1

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

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

例如:

在视图部分,我声明如下形式:

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

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

--

问候,

西奥

4

2 回答 2

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"/>

注意前导斜杠。

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

于 2013-04-06T19:29:21.160 回答
0

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

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

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

  • 路线:/register/submit
  • 决议:RegisterContoller::action_submit()
  • 请求方法(标准 HTTP 中的GET,POST​​ , PUT, DELETE)的管理发生在操作方法中。
于 2013-04-06T19:15:43.863 回答