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


Php, If I have a menu class, how to display it? (MVC logic)

我有一个菜单类:

addMenuItem ($parent)
modifyLinkTarget ($item)

等。现在我将用一个show()方法来展示它,该方法应该会产生HTML输出。但这不是一个好方法,因为如果我有几个模板,而它产生一个HTML。CSS不会帮助独立:)所以如何显示它不伤害MVC和灵活?

菜单类包含您的项目,链接等,是您的模型。正如您正确地说的,模型不输出任何东西,它是视图的任务。所以你必须将模型(菜单类对象)传递给你的视图,在那里你可以输出它。为此,您的菜单类可能需要一些额外的方法,如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);