mvc模式,框架,实现

时间:2012-05-23 06:19:02

标签: php mysql model-view-controller

您好我有一些关于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文件,我保持导入css开始的html与基本的东西和网站的标题从mysql获取菜单的数据我需要调用模型,但模型在控制器和每个页面调用得到它自己的控制器所以从目前为止我理解的每个控制器方法我需要调用某个模型菜单,登录表单等...在每个页面输出我需要获取数据或我该怎么做?

1 个答案:

答案 0 :(得分:3)

responsibility of a Controller is to handle User Input。如果您的菜单不需要任何用户输入,请将代码放入View Helper,然后从那里获取Model数据。然后是call that View Helper from the View。换句话说:那么你不需要控制器。

另一种方法是提供某种机制,允许您在每次调用Controller时注册通用功能,例如: something like Zend Frameworks's pre- and post-dispatch hooks。然后,您可以为这些挂钩编写插件,以便在每个请求上加载和注入某些Model数据。