【问题标题】:PHP MVC Form SubmissionPHP MVC 表单提交
【发布时间】:2016-03-31 18:49:45
【问题描述】:

我有一个关于在 MVC 架构(自写框架)中构建的 PHP 应用程序中完成表单提交的问题。

到目前为止,我看到的所有示例(包括现有的后端框架)都是这样工作的,一旦提交了向数据库添加记录的表单,就会执行控制器的某些方法 [比如 addRecord()],它会触发合适模型的方法。如果一切正常,则添加记录,并且控制器的方法 [在此示例中为 addRecord()] 呈现“索引”页面的视图,该页面显示包含数据库记录的表。

我想要实现的是使用用于添加记录的表单(与添加第一条记录相同)而不是“索引”来呈现视图。显然,我可以通过从 addRecord() 渲染适当的视图(带有表单的视图)轻松地做到这一点。

但棘手的一点是,当您检查 url 时,您会看到以下内容: 您第一次进入它将是即

http://project_name/my_controller/create

一旦第一个表单被提交并且您从 addRecord() 方法返回到视图,那么 url 将是:

http://project_name/my_controller/addRecord

我希望看到的是返回原来的url,即http://project_name/my_controller/create

不确定这是否清楚?

PS。当然,我可以使用 AJAX 调用来提交表单(这样我将停留在同一页面上),但也许没有 AJAX 也可以实现。

提前致谢,

【问题讨论】:

  • 由于这是一个自行编写的框架,很难说如何实现这一点,但您只需要在成功时重定向 addRecord 即可创建。我使用 slim 作为控制器,这是我创建的正常 MVC 流程。
  • 嗨书呆子,这是我一直想念的。谢谢你的提示!
  • 如果您想接受,我将其作为答案。

标签: php forms model-view-controller


【解决方案1】:

在控制器上,您需要提交到 addRecord 路由并进行处理。检查以确保它成功,并且在成功提交后,您可以重定向回创建路由。

因为您使用的是定制框架,所以很难举个例子。我使用具有路由重定向方法的 slim。如果您所做的没有类似的东西,那么使用应该可以解决问题。

header('Location: '.$createUrl);
die(); //or exit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多