1

您好,我一般对 mvc 模式和框架有一些疑问。我知道 mvc 代表模型-视图-控制器,模型很胖,控制器很瘦,但我不太确定视图部分的一些细节。比如说我有这个模型

<?php
class Menu_Model extends Models
{
    public function listMenuItems()
    {
       return $this->query('some_select');
    }
}

控制器

<?php
class Menu_Controller extends Controllers
{
   public function index()
   {
        $this->load('menu', 'Menu_Model');
        $this->view->assign('menuItems', $menu->listMenuItems());
        $this->view->add('menu.php');
   }
}

看法

<div class="menu">
<li>{echo_some_data_from_controller}</li>
</div>

上面的代码让我们说是一个简单的菜单,现在快写..作为一个例子。根据 mvc ideea,它需要有一个模型、一个视图和一个好的控制器,但是我如何在我拥有的每个视图中实现这个菜单?让我们假设:head.php 文件,我在其中保留 html 的导入 css 开头的基本内容和网站的标题,以从 mysql 获取菜单数据,我需要调用模型,但模型在控制器和每个页面都有它自己的控制器,所以根据我目前对每个控制器方法的理解,我需要调用某个模型菜单、登录表单等......在每个页面上输出我需要获取数据或我该怎么做做吗?

4

1 回答 1

3

控制器的职责是处理用户输入。如果您的菜单不需要任何用户输入,请将代码放入 View Helper,然后从那里获取模型数据。然后从 View 调用该 View Helper。换句话说:你不需要控制器。

另一种方法是提供某种机制,允许您在每次调用 Controller 时注册通用功能,例如Zend Frameworks 的 pre-和 post-dispatch hooks 之类的东西。然后,您可以为这些钩子编写插件,以在每个请求上加载和注入某些模型数据。

于 2012-05-23T06:24:45.543 回答