专栏首页喵了个咪的博客空间phalcon-入门篇9(view层基础使用)

phalcon-入门篇9(view层基础使用)

#phalcon-入门篇9(view层基础使用)#

本教程基于phalcon2.0.9版本

##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台

哈喽大家好呀,期待已久的第9篇终于和大家见面了,时隔半个多月在之间小编对编写phalcon的语言zephir进行了文档译文讲解以及在忙这工作上的一系列事情所以在这里给大家道个歉迟来了这么久,那么今天的主要类容是简单的介绍一下基本的view层在phalcon中要如何的运用,话不多说让我们开始今天的旅程把!

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

喵了个咪的博客:http://w-blog.cn

教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorial

phalcon官网地址:https://phalconphp.com

phalcon中文社区:http://www.iphalcon.cn/

##1. 分层渲染##

分层渲染顾名思义,就是在把不同层模版结合在一起渲染成一个整体的模版,一个很恰当的例子就是一个公司官网他的标题都是通用的,他的上面的菜单栏也是通用的,但是当在写莫一个模块中的莫一个页面的时候这些公用的地方还需要重写吗,这个答案当然是不,phalcon也很巧妙的考虑到了这一点,我们来看看它的分层渲染机制是怎样的

###1.1 分层渲染###

按照往常的规范我们建议一个名为ViewController的控制器然后填充代码如下:

<?php
use Phalcon\Mvc\Controller;

class ViewController extends Controller {

    public function indexAction($Id) {

        $this->view->Id = $Id;
    }
}

接着我们准备我们的view层的结构:

大家可以看到我们view对应的应该是view/index.phtml,那么layouts和根目录的index.phtml是干嘛的呢?先别着急我们先给这三个文件填充一下类容:

view/index.phtml:

<h3>这个是view控制器的index模版!</h3>

<p>这里有个参数是 <?php echo $Id; ?></p>

layouts/View.phtml**(注意如果要对view模块生效必须同名)**:

<h2>这个是view控制器的布局文件!</h2>

<?php echo $this->getContent(); ?>

index.phtml:

<html>
<head>
    <title>Example</title>
</head>
<body>

<h1>这个是默认的布局文件!</h1>

<?php echo $this->getContent(); ?>

</body>
</html>

然后接着我们来运行一下看看结果如何:

http://phalcon.w-blog.cn/phalcon/View/index/5

从这个地方可以看出渲染程序先进入了index.phtml在index.phtml的代码中引入了layouts/View.phtml中的代码,然后在layouts/View.phtml中映入了我们控制器中输出了参数的代码,这样就是一个完整的分层渲染的逻辑了,大家可以好好体会一下!

###1.2 使用模版###

那么有人问了我要是在view模块中也同样复用其他模块的layouts咋办呢,那么在这里就有一控制渲染的已经小技巧了

我们在控制器中加入如下代码:

public function initialize()
{
    $this->view->setTemplateAfter('common');
}

然后在layouts文件夹下面创建common.phtml加入如下代码:

<h2>这个是common控制器的布局文件!</h2>

<?php echo $this->getContent(); ?>

然后我们在运行

http://phalcon.w-blog.cn/phalcon/View/index/5

我们会发现不仅仅调用了layouts中的view.phtml而且也使用了common.phtml

$this->view->setTemplateBefore('common')和$this->view->setTemplateAfter('common')可以控制渲染顺序

##2. 选择视图##

当我们在做很多项目的时候往往很多页面是复用的,虽然我们制定了很多不同的Action但是要怎么通用一个模版呢,phalcon咋这里提供了一个模版选择的功能,你可以选择渲染制定的一个模版

方法如下:

public function indexAction($Id) {
    $this->view->pick("Index/index");
    $this->view->Id = $Id;
}

这个时候制定了pick之后我们在此请求的内容就变成如下结果了:

##3. 小结##

应为小编并不是特别擅长view层的使用,所以还有部分小编觉得不是太重要的类容并没有涉及到,有兴趣的同学可以参考官方文档,那么今天的教程就到这里的多谢大家的关注!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎大家的加入!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • phalcon-入门篇6(控制器)

    #phalcon-入门篇6(控制器)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀...

    喵了个咪233
  • phalcon-入门篇3(优美的URL与Config)

    phalcon-入门篇3(优美的URL路由与Config) ? 本教程基于phalcon2.0.9版本 前言先在这里感谢各位phalcon技术爱好者,我们提供这...

    喵了个咪233
  • phalcon-入门篇1(基本介绍与环境搭建)

    #phalcon-入门篇1(基本介绍与环境搭建)# ? 本教程基于phalcon2.0.9版本 ##前言## ***先在这里感谢各位phalcon技术爱好者,我...

    喵了个咪233
  • ionic3应该善用组件和指令

    其实ionic3(angualr4)和ionic2(angular2)差不多,但和ionic1(angular1)就差别非常大了,可以说基本是推倒了重来。在an...

    IT晴天
  • Spring和Email整合详解

    Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封...

    品茗IT
  • 基于smtp协议的邮件系统(自己写的)

    最近几天做好了应用【贱泰迪】,其中有个意见反馈,发送邮件, 我知道可以调用系统发送邮件,但这种方法有个弊端,就是您的手机必须安装Mail的客户端, 因此我想...

    xiangzhihong
  • SpringBoot发送邮件

    Java团长
  • SpringBoot入门建站全系列(十)邮件发送功能

    Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封...

    品茗IT
  • 张钦坤:云计算、开放平台与服务商版权责任

         云计算是借助虚拟技术对服务器资源的大幅提升,在此基础上可以为众多企业提供所需的服务,降低企业运营成本。互联网开放平台是依托于云计算技术而进行的商业模...

    腾讯研究院
  • java 项目引用类型不明确

    将 destroy-method="close"删除后运行就可以,运行成功后,再次添加上,项目可以正常运行。 原因未知。

    用户2657851

扫码关注云+社区

领取腾讯云代金券