zoukankan      html  css  js  c++  java
  • 【三十五】thinkphp之视图

    1.模板定义

    视图属于mvc中的v。一般是html结合php获取的数据提供给用户使用。

    • 每个模板的文件都是独立的(文件名与控制器名称必须一样)
    • 默认的模板文件规则是视图目录/[模板主题]控制器/操作名+模板后缀(http://localhost/basic_thinkphp/index.php/Home/User1/index)
            //在controller目录下user控制器下index方法输入
            //对应的目录为/Weibo/Home/View/User1/index.html
            //渲染模版输出
            $this->display();    

    在view目录下需存在user1/index.html.即可渲染出来

    修改模板的一些配置.在common/conf/config.php中修改:

        //修改模版的视图目录
        'DEFAULT_V_LAYER' =>'View', 
    
        //修改模版中的文件的后缀
        'TMPL_TEMPLATE_SUFFIX'=>'.tpl',
    
        //用下划线代替目录层次
        'TMPL_FILE_DEPR'=>'_', //User_index.tpl
    
        //设置外部的模版目录
        'VIEW_PATH'=>'./Public/', 
    
        //设置默认主题目录
        'DEFAULT_THEME'=>'default',

    在controller/usercontroller.class.php输入此行,即可切换主题.:(主题是你可以在配置文件中修改的)

            // 切换主题
            $this->theme('blue')->display();

    2.赋值(assign)与渲染(display)

    thinkphp提供了assign方法对模板变量赋值,无论哪种变量类型都统一使用assign赋值

    //给模版传递一个变量
        $this->assign('user', '蜡笔小新');
    //模版中调用变量
        {$user}
    //PS:这个方法必须在 display()方法之前使用,保存变量正确传递。

    渲染模板使用的是display方法.格式如下:

    1. display([模板文件],[字符编码],[输出类型])
    2. 如果不输入参数,目录是(当前模块/默认视图目录/当前控制器/当前操作.html)
    //不传参数
    // ./Weibo/Home/View/default/User/index.tpl
    $this->display();
    
    //修改默认模版
    // ./Weibo/Home/View/default/User/add.tpl
    $this->display('add');
    
    //修改默认模版,目录加模版
    // ./Weibo/Home/View/default/Bbb/add.tpl
    $this->display('Bbb/add');
    
    //修改默认模版,模块加目录加模版
    // ./Weibo/Admin/View/default/Bbb/add.tpl
    $this->display('Admin@Bbb/add');
    
    //修改默认模版,主题加目录加模版
    // ./Weibo/Home/View/blue/Bbb/add.tpl
    $this->theme('blue')->display('Bbb/add');
    
    //修改默认模版,自定义模版
    // ./Template/Public/add.tpl 
    $this->display('./Template/Public/add.tpl');    //Template 和 Weibo 同级
    
     //修改默认模版,指定编码和文件类型,一般不用填写,默认即可
    $this->display('add', 'utf-8', 'text/xml')

    3.模板地址

    thinkphp封装了一个T函数,专门用于生成模板文件.格式如下:

    • T([资源://][模块@][主题/][控制器/]操作,[视图分层]);
    //输出当前模版地址
        echo T();
    //结合上面讲的所有定义方法来自定义模版:
        echo T('Public/add')
        echo T('Admin@index');
        echo T('Admin@Public/add', 'Template');
    //直接使用T函数输出
        $this->display(T());

    4.获取内容

    如果需要获取模版的内容,可以使用 fetch()方法,这个方法的使用和 display()方法一致

    //获取模版里的内容
    $content = $this->fetch();
    var_dump($content);
    //通过内容再渲染输出
    $this->show($content);
    //PS:使用 fetch()方法获取内容,主要是为了可以处理和过滤更加复杂的内容。然后
    处理后再由 show()方法输出。
  • 相关阅读:
    final/override控制
    高效遍历图像
    快速初始化成员变量
    C++ boost.python折腾笔记
    百亿数据毫秒响应级交易系统读写分离存储数据设计
    解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
    生产应用常见坑
    spring AOP应用
    springmvc No mapping found for HTTP request with URI in Dispatc
    myeclipse使用maven插件进行maven install时报错check $m2_home environment variable and mvn script match
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/8323572.html
Copyright © 2011-2022 走看看