0

当我单击“Registreer je”按钮时,如何在名为 Controller.php 的类中调用函数注册器?

这是我的 Index.php 文件中的一部分。它还有一个 'require_once('Controller.php');'

<form method="POST" action="<?php echo Controller::registreer()?>">
    <button type="submit" class="btn btn-primary">Registreer je</button>
</form>`

和我在 Controller.php 中的函数:

public static function registreer(){
        header("Location:registreer.php");
        exit();
    }
4

2 回答 2

1

我会说“只是打电话给你的路线”,但看起来你的设计实际上没有任何路线......但我稍后会谈到。

所以现在你必须

  1. 再次调用脚本,检查调用站点的方法是否为 POST,然后调用您的 Controller 方法
  2. 创建第二个脚本,可能registreer.php会在提交表单时调用它,您可以在其中调用 Controller 方法

上面的示例不起作用,因为您基本上是在调用您的方法Controller::registreer()并将从中返回的结果(如果有,在这种情况下没有)插入到标签的action属性中。<form>

如果您想registreer.php在表单提交时实际调用文件,只需将其写入action属性即可。


无论如何,这不是一个很好的设计 - 由于您的代码中将有某种控制器,因此实际创建调用您定义的方法的路由将是最佳实践。

查看本教程以了解 MVC 到底是什么。

之后,我建议您使用众多可用的 MVC 框架之一。

我最喜欢的两个是

  • Silex,一个微型框架,主要为您提供更改,为您的应用程序创建快速轻松的路由
  • Slim,又一个微框架
  • Laravel,很好用的框架

如果你认为你已经有了这个想法并且想要更深入,看看“更大”的框架,比如

  • Symfony2不仅仅是一个 MVC 框架,它带有一堆额外的组件(称为 bundles)
  • Zend 框架,另一个

这些只是许多框架中的五个示例。去拿一个。

于 2013-10-22T14:48:31.380 回答
0

最好只从控制器获取路径,因为除了发送重定向标头之外,您并没有真正执行任何操作,这是在给出路径时默认执行的操作。

您也不能echo重定向,这会由于没有要回显的字符串而导致错误。

如果您知道路径,请手动设置它(或通过变量动态设置)如果路径是动态的,请通过对象本身的 getter 和 setter 检索它。

于 2013-10-22T14:48:13.697 回答