Php MVC框架中如何使用表单?
我做简单的MVC教程已经有一段时间了,我明白了这个概念。但我想知道,当表单显示在视图中时,表单是如何处理的?用于检查表单提交的代码必须存在于视图文件中,因为视图应该只用于显示输出,所以视图文件并不适合Php MVC框架中如何使用表单?,php,model-view-controller,forms,Php,Model View Controller,Forms,我做简单的MVC教程已经有一段时间了,我明白了这个概念。但我想知道,当表单显示在视图中时,表单是如何处理的?用于检查表单提交的代码必须存在于视图文件中,因为视图应该只用于显示输出,所以视图文件并不适合 因此,当您在MVC框架的视图文件中有表单时,检查表单提交的代码应该在哪里?当然这取决于特定的框架,但这是非常典型的: 表单数据发布到控制器(与所有请求一样) 数据验证规则在模型中定义 控制器通过模型运行数据以进行验证 如果成功验证,控制器将执行其应执行的任何操作 如果数据无效,控制器将无效字段的
因此,当您在MVC框架的视图文件中有表单时,检查表单提交的代码应该在哪里?当然这取决于特定的框架,但这是非常典型的:
- 表单数据发布到控制器(与所有请求一样)
- 数据验证规则在模型中定义
- 控制器通过模型运行数据以进行验证
- 如果成功验证,控制器将执行其应执行的任何操作
- 如果数据无效,控制器将无效字段的错误消息推送到视图
- 该视图仅显示错误消息
if
语句?如果盲目地加载视图而不检查是否需要,那不是MVC,那只是一个模板。另外,请注意,MVC不一定需要OOP.Agreed。但是将表单数据传递给控制器的代码在视图中,不是吗?不是-视图只是编写HTML。PHP引擎将处理获取表单数据并将其存储在$\u GET/$\u POST中(取决于表单的method属性),然后由框架决定如何处理。通常,框架会将这些数据包装在某种请求对象中(这通常发生在调用控制器代码之前)。您可以按如下方式检查控制器中的表单数据:if(isset($\u POST['myFormField']){/*表单数据已发布*/}
Yes。这就是我要说的。但是,您上面提供的代码片段将在控制器的方法中,对吗?这正是我的问题。我在想IF语句应该放在视图中(它不应该放在视图中,因为我知道视图只是为了输出,所以这个问题就被问到了)。所以现在的问题是,如果代码在控制器内的一个方法中,那么是什么调用该方法来检查表单提交?@lyrae每个请求都会在框架内经历一个周期,通常是路由器/调度器→ 控制器→ (模型→ 控制器)→ 看法(例如,请参阅)无论何时“打开”页面或发布表单数据,都是一个新请求。每个请求都经过相同的MVC周期。我建议您开始使用一个实际的MVC框架来感受它。