Chinaunix

标题: CI框架与widget(页面布局) [打印本页]

作者: 三里屯摇滚    时间: 2012-02-13 16:43
标题: CI框架与widget(页面布局)
CI框架与widget(页面布局)






    在WEB开发过程中,我们免不了要输出视图文件,而通常视图文件又一般都少不了头部、左侧栏以及底部这些公共元素。

    如何让整个项目开发在涉及视图套用时引入敏捷的思维,提高效率呢?就不得不提一下widget。承然你也大可以使用HMVC模型。
   
    这里仅介绍下widget如何结合入CI框架中:
   
    1、在类文件MY_Controller.php中添加调用方法:



Php代码
  1. 1./*  
  2. 2. * 如果$name存在则调用widget类及widget方法  
  3. 3. *@param string $name   
  4. 4.*/  
  5. 5. protected function widget ($name = '')   
  6. 6. {   
  7. 7.     if (isset($name) && $name != '')   
  8. 8.     {   
  9. 9.         require_once BASE_WIDGET.$name.'.php';   
  10. 10.     }   
  11. 11. }  
  12.    /*
  13.     * 如果$name存在则调用widget类及widget方法
  14.     *@param string $name
  15.    */
  16.     protected function widget ($name = '')
  17.     {
  18.         if (isset($name) && $name != '')
  19.         {
  20.             require_once BASE_WIDGET.$name.'.php';
  21.         }
  22.     }
复制代码
2、定义widget类文件:


Php代码
  1. 1.<?php   
  2. 2./*-------------------------------------------------------------------------------  
  3. 3.widget.php 组件包含自己的控制器,视图,模型(可以共用普通model)  
  4. 4.*用来实现各页面都有的公共部分  
  5. 5.@author crystal 20120106  
  6. 6.---------------------------------------------------------------------------------*/  
  7. 7.class Widget extends MY_Controller   
  8. 8.{   
  9. 9.    private function __construct()   
  10. 10.    {   
  11. 11.        parent::MY_Controller();   
  12. 12.    }   
  13. 13.  
  14. 14.    /*** 获取当前类名*/  
  15. 15.    private static function _getClass()   
  16. 16.    {   
  17. 17.        return __CLASS__;   
  18. 18.    }   
  19. 19.      
  20. 20.    public static function left()   
  21. 21.    {   
  22. 22.        $class = self::_getClass();   
  23. 23.        $data['userinfo'] = MY_Controller::_getUserCookieInfo();   
  24. 24.        $this->load->view('com/left.php',$data);   
  25. 25.    }   
  26. 26.}   
  27. 27.?>  
  28. <?php
  29. /*-------------------------------------------------------------------------------
  30. widget.php 组件包含自己的控制器,视图,模型(可以共用普通model)
  31. *用来实现各页面都有的公共部分
  32. @author crystal 20120106
  33. ---------------------------------------------------------------------------------*/
  34. class Widget extends MY_Controller
  35. {
  36.     private function __construct()
  37.     {
  38.         parent::MY_Controller();
  39.     }

  40.     /*** 获取当前类名*/
  41.     private static function _getClass()
  42.     {
  43.         return __CLASS__;
  44.     }
  45.    
  46.     public static function left()
  47.     {
  48.         $class = self::_getClass();
  49.         $data['userinfo'] = MY_Controller::_getUserCookieInfo();
  50.         $this->load->view('com/left.php',$data);
  51.     }
  52. }
  53. ?>
复制代码
3、在视图文件中调用(在相应的控制器中应该先调用父类控制中的widget方法):


Php代码
  1. 1.<!--left sider -->   
  2. 2.<div>   
  3. 3.<?php    Widget::left();?>   
  4. 4.</div>   
  5. 5....   
  6. 6.<!--/left sider -->  
复制代码

作者: 清风鸟儿    时间: 2012-02-13 16:43
谢谢分享




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2