我正在为一个数据库应用程序开发我自己的 PHP MVC,我已经完成了它,但是使用可以完成所有事情的单片类 - MySQL 处理、输入处理和显示。它工作得很好,但调试和修改是一场噩梦!我最近发现了 MVC,并且正在重写应用程序 - 目前这一切都在绘图板上,所以我实际上没有任何代码可以与您分享。
我遇到了一件事:我知道控制器应该调用模型以根据用户输入对其进行修改,然后调用视图,视图将访问它需要获取其数据的模型和然后显示它。我希望视图独立于控制器获取其数据,而不是让控制器充当中介。我从控制器的那一行开始,从模型中获取数据并将其交给视图,但很快就遇到了麻烦,视图需要访问多个模型。
为了解释我坚持的问题,我将举一个例子:
示例:提交带有数据的表单,模型验证失败
前控制器:
- 加载相关控制器并调用 ProcessForm 动作
控制器:
- 实例化 Model 类并调用方法来加载和验证数据
模型:
- 验证失败:生成错误列表并返回“false”
控制器:
- 如果模型返回“真”,则重定向到索引页面
- 它返回'false':调用视图
看法:
- 实例化 Model 类并获取数据
- 显示数据和错误消息
我的问题是,拥有自己的模型实例的视图如何获得在控制器的模型实例中生成的错误消息,而控制器没有将自己的模型实例直接交给视图?我认为第一个实例需要将消息存储在第二个实例可以检索它们的地方?
我意识到第一个实例可以将其错误返回给控制器,然后它可以将其传递给视图,独立于模型本身,但我仍然希望保持视图独立于控制器。