• dedecms mvc 开发


    目录结构说明:

    |_app
        |___control      控制器(C)
        |___model        模型(M)
        |___templates    视图模板(V)
        |___libraries    类库
        |___data         配置
        |___datahelper  小助手
        |___static       样式,js,图片文件夹
        |___index.php    统一入口文件

    index.php入口文件

     1 require_once(dirname(__file__).'/../include/common.inc.php');
     2 
     3 require_once(DEDEINC.'/request.class.php');
     4 
     5 $ct = Request('ct','index');//c代表着control,即:控制器名(即文件名,类名)
     6 $ac = Request('ac','index');//a代表着action,即该控制器下的某个方法
     7 
     8 //统一应用程序入口,即根据url访问相应的页面
     9 
    10 RunApp($ct,$ac);

    control下 index.php 控制器

    1 //注意,所有的控制器类都要继承Model类
    2 class index extends Control{
    3     
    4     // dedecms mvc中的控制器方法,一律需要添加前缀 ac_ ,这是必须这么做的
    5     function ac_index(){
    6         echo "这里是dedecms API开发教程<br/>";
    7         echo "<a href='index.php?ct=article&ac=artlist'>列出文章</a>";
    8     }

    控制器可以选择继承一个基类:Control这个类对应的文件名是/include/control.class.php,这里面含有基类的相关操作说明,这里有几个常用方法:

    $control->Model(); 
    //载入一个模型。例如问答模块中index.php中的 $this->question = $this->Model('mquestion'),就是在载入了mquestion这个模型。然后我们就可以通过$this->question来调用模型相应操作。实现数据的插入,更新等等操作。调用类的名字可以随便定义,但要保证没有冲突。模型的文件放在model目录中。

    $control->Libraries(); 
    //载入一个类。有时开发我们需要一个系统中不存在的类时,我们可以通过这个方法来载入一个自己的类。具体的方法和模型一样。类放在libraries目录中。

    $control->helper(); 
    //载入一个小助手。引入小助手是为了更好的帮助我们存放和管理需要用到的Function。
    具体的方法和模型一样。小助手放在datahelper目录中。

    $control->SetTemplate(); 
    $control->SetTemplet(); // 设定当前操作需要指定的模板;

    $control->SetVar($k, $v); // 设定模板需要解析的变量,在模板中使用{dede:var.name /}进行调用.

    GLOBALS['k'] = $k; 
    // 设定模板需要的变量,在模板中可以直接用<?php echo $k;?>方式输出(问答模块基本上都是采用这样的方式输出),这种方式比较适合处理一些复杂的数据,例如数组。

    $control->GetVar($k); // 获取设定的模板变量
    $control->Display(); // 显示模板解析后的内容
    $control->SaveTo(); // 将内容保存到文件

    注:我用v5.7版本时,用的以下方法:

    1 $tp = new DedeTemplate;
    2 $tp->SetArray("art",$res);
    3 $tp->LoadTemplate(DEDEROOT."/api/templates/test.htm");
    4 $tp->Display();

    模板标签调用说明:

    如果在控制器中通过$control->SetVar($k, $v); 这种方式设定的参数,我们通过标签 {dede:var.name /}的方式进行调用。

    如果在控制器中通过GLOBALS['k'] = $k;这种方式设定的参数,我们通过标签 {dede:global.name/}的方式进行调用或者直接采用php的方式进行输出。

     1 <?php foreach ($art as $k=>$v){ ?>
     2 <li><a href="<?php echo $v['url']; ?>"><?php echo $v['title']; ?></a></li>
     3 <?php }; ?>
     4 
     5 
     6 {dede:array.art}
     7 <li><a href="{dede:value.url /}">{dede:value.title /}</a></li>
     8 {/dede:array}

    模板解析,可参考:https://blog.csdn.net/crisis111/article/details/45267839 

    gitee地址:git@gitee.com:lizole/dedecmsapi.git

  • 相关阅读:
    浏览器20年图说简史
    CF1437D Solution
    CF1446B Solution
    CF1444A Solution
    CF1437C Solution
    让您的网站拥有MSDN资源库搜索功能[转摘MSDN]
    自定义web part版面变形的原因
    SPS中模板保存数据库的位置
    利用配置文件自定义站点
    VS.NET2003 开发环境 生成样式表 和 自动书写HTML对象模型
  • 原文地址:https://www.cnblogs.com/lijea/p/9547786.html
Copyright © 2020-2023  润新知