gpt4 book ai didi

php - 一个 View (网页)中来自多个模型的数据

转载 作者:行者123 更新时间:2023-12-03 23:01:32 25 4
gpt4 key购买 nike

我是 MVC 模式的新手,但一直在努力掌握它,例如通过阅读我想试用的 CakePHP 框架的文档。但是,现在我偶然发现了一个我不太确定如何处理的场景。

我正在处理的网站由九个固定页面组成,也就是说,除了这些页面之外,不会存在任何其他页面。每个页面都包含一些特定的内容,例如留言簿页面包含留言簿注释。然而,除此之外,每个页面都有一个小的新闻框和一个管理员应该能够编辑的简短的事实框。在我看来,这些应该被视为模型,例如NewsPost 和 ShortFact 具有所属控件 NewsPostController 和 ShortFactController。请注意,它们彼此完全无关。

现在,我的问题是,如何创建包含留言簿注释以及新闻邮箱和简短事实的单个 View (网页)?我是否:

  1. 为留言簿设置一个独特的 Controller GuestBookController(带有 index() 操作),以便访问 www.domain.com/guest_book 让 index 操作获取最新的新闻帖子和一个随机的简短事实?

  2. 将静态页面放在/pages/中并让 PagesController 执行抓取?

  3. < 请在这里填写正确的方式。 >

提前致谢!

最佳答案

听起来您需要研究元素,否则您可以将其嵌入到布局中 - 但如果您问我,使用元素会更整洁,请将它们分开。

http://book.cakephp.org/2.0/en/views.html#elements

这些允许您创建可以嵌入到其他 View 中的小 View 。

您可能还需要将一些逻辑放入 AppController(记住所有其他 Controller 扩展应用程序 Controller )以加载这些 View 所需的数据。 beforeRender 函数应该对此很有用 - 它是 cakephp 提供的钩子(Hook)函数之一,所以如果你在 Controller 上定义它,它总是在 Action 完成后 View 呈现之前调用。

AppController 中的类似内容应该会有所帮助:

function beforeRender() {
$this->dostuff();
}

function doStuff() {
// do what you need to do here - eg: load some data.
$shortfacts = $this->ShortFact->findAll();
$news = $this->NewsPost->findAll();
// news and shortfacts will be available within the $shortfacts and $news variables in the view.
$this->set('shortfacts', $shortfacts);
$this->set('news', $news);
}

如果您需要在应用程序 Controller 中使用此 doStuff 方法中的模型,那么您需要在 AppController 顶部的 uses 中定义它们

class AppController {
var $uses = array('NewsPost', 'ShortFact');
}

关于php - 一个 View (网页)中来自多个模型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122678/

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