TP5视图和模板

Thinkphp5.0 视图和版本的学习记录总结,详细内容参看官方提供的完全开发手册(虽然文档写的很烂,看一遍还不定能明白是干嘛的,这也是我总结记录的一个原因)。ThinkPHP5.0完全开发手册http://www.kancloud.cn/manual/thinkphp5/118003.

logo.png

文档中经常出现的视图模板模板引擎这三个概念究竟如何理解?

  • 视图:即是MVC中的V,也就是在模块下面的view目录下的html文件,承载着页面内容显示和用户交互相关。

  • 模板:在这里我理解为视图就是模板,在fetch,display等方法中传入的模板参数就是视图文件的路径。

  • 模板引擎:就是生成、解析模块的一个机制或者一个封装的操作。解析模板中的一些规则,最终转化为PHP代码。以模板传递变量为例:

// 模板变量赋值
$this->assign('name','ThinkPHP');

在模板中使用变量:

模板变量 : {$name}

经过模板引擎解析后该代码转化为:

模板变量 : <?php echo $name; ?>

其中{,}是在配置文件中模板的标签标记,模板引擎解析定义好的标记,在按照约定的操作来解析模板中的代码为PHP代码,最后转为php文件输出。这下理解了吧,模板引擎就是干这些事情的。

tp5中模板引擎包含PHP原生模板和Think模板引擎,默认的Think,这些在实际中一般用不到,全部都按默认的即可。此外TP5还支持比较有名的Smarty模板,需要一些设置操作。

关于模板其实其原理都是差不多,都是为了方便前后端分离操作,有人说php语言本身就可以充当模板和其他模板一样直接嵌入在在html中,所以其他模板没有存在的必要性,这个不同的人各执一词没法讨论。

视图中fetchdisplay方法如何区别及使用

继承了\think\Controller类的控制器中可以直接调用$this->fetch('hello',['name'=>'thinkphp']);这里的fetch方法是controller的方法,display方法也是一样。fetch方法源代码如下:

    /**
     * 加载模板输出
     * @access protected
     * @param string $template 模板文件名
     * @param array  $vars     模板输出变量
     * @param array  $replace  模板替换
     * @param array  $config   模板参数
     * @return mixed
     */
    protected function fetch($template = '', $vars = [], $replace = [], $config = [])
    {
        return $this->view->fetch($template, $vars, $replace, $config);
    }

其实调用的也是view中的fetch方法。关于fetchdisplay方法作用文档解释如下:

| 方法 | 说明 |
|-------- |------ ------ |
| fetch | 渲染模板输出 |
| display | 渲染内容输出 |
| assign |模板变量赋值 |
|engine |初始化模板引擎 |

根据以上解释你能分出方法fetch/display的区别和作用吗?我的理解如下:

  • fetch方法: 用来获取模板并输出显示,默认不带任何参数 自动定位当前操作的模板文件。如果传入参数,参数是具体的一个模板,这个方法较为常用。
  • display方法:不使用模板文件,直接传入的参数是具体的内容(可以是字符串或其他内容文档),然后直接输出,传入参数如果为空可能会什么都不显示。这个方法貌似用的不多。

模板输出替换

模板的输出替换就是在模板中替换一些特定的字符串,这个有点类似于宏定义在代码编译时期的直接替换。

替换的字符变量必须在应用的config.php文件中 view_replace_str指定。

    // 视图输出字符串内容替换
    'view_replace_str'       => [
        '__PHP__' => 'Hypertext Preprocessor',
    ],

这样可以全局在模板中可以直接使用'_PHP_' , 然后就行输出内容'Hypertext Preprocessor'。定义的内容必须在view_replace_str中以数组的形式存储,否则可能会不起作用。

模板变量输出

模板中可以输出变量,当然是由于模板引擎的作用。变量也可以原样输出即不被引擎解析

可以使用literal标签来防止模板标签被解析,例如:

{literal}
    Hello,{$name}!
{/literal}

上面的{$name}标签被literal标签包含,因此并不会被模板引擎解析,而是保持原样输出。

模板输出中可以是赋值的变量,也可以是系统变量、系统配置参数、系统常量等数据。此外关于变量还可以进行一些运算操作和函数的使用。

感悟

官方完全开发手册反反复复看了几遍,有时去看看源码,有时依然懵逼。现在意识到即使完全掌握了TP,不会HTML,不会CSS还是做不出像样的东西来,听说bootstrap适合我这样不懂前端的菜鸟,而且还有基于bootstrap的可视化在线布局工具,可以导出代码,然后在此基础上加以修改。
找了两个可视化布局地址:

基于此我还在慢慢的学习。肯定有理解不到位的地方或者其他更好的学习途径和方法,若你能看到,谢谢指教!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,612评论 4 59
  • #Campus Day4#今天,是营之光Y—Fun海陆探索综合夏令营的营期最后一天;小编的心情万分感慨,因为又要面...
    營之光小编阅读 423评论 0 1
  • 梦见吃一个咸鸭蛋,黄特别大,颜色也好看。但是干巴巴的,只有咸味。我问别人,别人说这种咸鸭蛋就是这样,只是看上去好看。
    死在田园阅读 118评论 0 0
  • 放假第三天才回过神来,可见之前欠的休息账真不少!
    琦丽_819e阅读 156评论 0 0
  • 我常想,该以怎样的心情去读安妮宝贝大部分的书?那清冷的笔调,灰暗的色彩,那些孤独却真性情的游走于城市边缘的男子...
    Florence0818阅读 192评论 0 0