Php,如果我有一个菜单类,如何显示它? (MVC逻辑)

发布于 2024-11-28 13:51:27 字数 222 浏览 1 评论 0原文

我有一个菜单类:

addMenuItem ($parent)
modifyLinkTarget ($item)

等等。现在我将使用 show() 方法显示它,该方法应该生成 HTML 输出。但这不是一个好方法,因为如果我有多个模板,而它生成一个 HTML,该怎么办? CSS 不会帮助独立:)那么如何显示它而不损害 MVC 和灵活性呢?

I have got a menu class:

addMenuItem ($parent)
modifyLinkTarget ($item)

etc. Now I will show it with a show() method, which should produces HTML output. But its not a good way, because what if I have several templates while it produces one HTML. CSS wont help standalone :) so how to display it not to hurt MVC and being flexible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

负佳期 2024-12-05 13:51:27

菜单类包含您的项目、链接等,并且是您的模型。正如您所说,模型不输出任何内容,这是视图的任务。所以你必须将模型(菜单类对象)传递到你的视图,在那里你可以输出它。为此,您的菜单类可能需要一些额外的方法,例如 getAllMenuItems(int $parentItem) 或类似的方法。在您看来,您可以执行以下操作:

<ul>
<?php foreach($menuClass->getAllMenuItems(2) as $item) { ?>
   <li>$item['text']</li>
<?php } ?>
</ul>

如您所见,您可能必须使用 menuItem 类扩展菜单模型,以遵循 OOP 方式。您的菜单类组织了多个 menuItem 对象。

总的来说,你必须有以下情况:

header('some html utf8 http header stuff');
echo viewObject->generateHTML('template.tpl', $contentData, $menuObject);

The menu class contains your items, links etc. and is your model. As you correctly said, the model does not output anything, it is the task of the view. So you have to pass the model (menu class object) to your view, where you can output it. For this, your menu class might need some additional methods like getAllMenuItems(int $parentItem) or something like that. In your view, you can do something like this:

<ul>
<?php foreach($menuClass->getAllMenuItems(2) as $item) { ?>
   <li>$item['text']</li>
<?php } ?>
</ul>

As you can see, you might have to extend your menu model with a menuItem class, to follow the OOP way. Your menu class organizes several menuItem objects.

Overall, you have to following situation:

header('some html utf8 http header stuff');
echo viewObject->generateHTML('template.tpl', $contentData, $menuObject);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文