gpt4 book ai didi

php - 在 CodeIgniter 中绕过 Controller 的方法?

转载 作者:搜寻专家 更新时间:2023-10-31 20:55:20 25 4
gpt4 key购买 nike

我一直在使用 PHP 的 CodeIgniter 框架并且很喜欢它,但我注意到它似乎需要每个 View 都有一个 Controller 。我想知道是否有一种方法可以从 View 本身调用特定模型,而不是通过 Controller 进行路由。我知道在大多数情况下使用 Controller 是最佳实践,特别是在需要以某种方式修改模型数据的情况下,但我有一些情况我只需要对 View 进行严格的数据拉取(已加载通过 ajax),并为此设置一个 Controller 似乎是多余的。

有什么想法吗?提前致谢!

最佳答案

您从根本上误解了 MVC,至少在 CI 中是这样。

您站点上的所有 URL(至少是那些使用 CI 框架的 URL)都映射到 Controller 中的函数(方法)。

http://myCIsite.com/controller/method[/var1][/var2] ...

URL 是通过常规 HTTP 还是通过 AJAX 访问并不重要。这始终是一对一的映射。因此,您应该将 Controller /方法组合视为“网页”。不要将 View 视为网页。

模型和 View 从属于 Controller 。 Controller 将特定职责委派给它们 - 模型的数据库交互,以及页面输出到 View 。

因为模型和 View 仅用于执行委派的职责,所以在任何给定的 Controller /方法中都不需要使用它们。例如,帮助页面通常不需要与数据库交互,因此服务给定帮助页面的 Controller /方法组合没有使用模型。同样,表单处理程序经常在处理完成后重定向到另一个页面。因此,没有对应于表单处理程序的 View (但(可能)在重定向到页面中有一个从 Controller /方法调用的 View )。

此外,模型和 View 不一定与各个 Controller /方法一一对应。任何给定的模型都可以从多个 Controller 中加载和使用。类似地, Controller 可以有一个单一的整体 View ,供所有方法使用,或者可以为每个方法分配自己的 View 。 (或者,正如我刚才所说,给定的 Controller /方法可能根本不使用 View 。)

最后,CI 不强制执行严格的 MVC 分离。您可以与数据库交互并从 Controller 中回显 HTML,CI 不会提示。尽管如此,还是遵循了这种责任分离和委派,因为逻辑上分离责任使代码更易于阅读,并帮助您在编码中遵循 DRY 原则。

基本理解是“网页”对应于 Controller /方法。 View 和模型在使用时处理 Controller /方法的委派职责。

关于php - 在 CodeIgniter 中绕过 Controller 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com