Phalcon 使用视图

输出一个变量到视图

 // 控制器代码
 $test_str= 'test';
 $this->view->test_str= $test_str;

// 视图文件代码
<p>变量test_str: echo $test_str; ?>p>

视图的层级关系
在Phalcon 中 视图文件会遵循一个层级关系
每次调用视图都会按照层级关系调用的

流程如下

先调用视图文件夹下的index.volt
(.phtml 我开启了volt 模板引擎所以后缀是这个)
文件路径views\index.volt

再调用内层控制器公告视图文件
例如 控制器 User 那么调用的文件是views\layouts\user.volt

最后调用该方法的 视图文件
例如我访问的是 User控制器的 login 方法 那么调用的文件是 views\user\test.volt

实例代码

// 控制器代码

use Phalcon\Mvc\Controller;
class UserController extends ControllerBase
{
    // 登陆
    public function loginAction(){
    }
}

/* 视图文件代码 */

// views\index.volt

<html>
<head>
    <title>测试 Phalcon的模板引擎title>
    <meta charset="utf-8" />
head>
<body>
    
    
    <h1>我是最外层的内容,下面的任意目录的模板都会继承我!h1>
    

     echo $this->getContent(); ?>
body>
html>


// views\layouts\user.volt


<h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!h2>

 echo $this->getContent(); ?>


// views\user\login.volt


<h3>我才是testAction 方法对应的视图文件!h3>
 

最后生成的html代码


<html>
<head>
    <title>测试 Phalcon的模板引擎title>
    <meta charset="utf-8" />
head>
<body>
    
    
    <h1>我是最外层的内容,下面的任意目录的模板都会继承我!h1>
    



    
    
    <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!h2>
    



    
    
    <h3>我才是loginAction 方法对应的视图文件!h3>
    
body>
html>
// 视图层级关系 具体请看这个方法生成的源代码


        //  =================  关闭视图渲染层级关系 =================
        /* 

            有下面几种模式

            ORDER 0
            LEVEL_NO_RENDER 
            表示,以避免产生任何形式的演示。

            ORDER 1
            LEVEL_ACTION_VIEW
            生成表示与该操作关联到视图。

            ORDER 2
            LEVEL_BEFORE_TEMPLATE
            生成控制器前演示模板布局。

            ORDER 3
            LEVEL_LAYOUT
            生成演示控制器布局。

            ORDER 4
            LEVEL_AFTER_TEMPLATE
            生成演示控制器后的模板布局。

            ORDER 5
            LEVEL_MAIN_LAYOUT 
            生成报告的主要布局。文件视图/ index.phtml 

        */

        // 页面空白
        // $this->view->setRenderLevel(0);

        // =================  1 =================
        // 
        // 主要内容
        // 
        // $this->view->setRenderLevel(1);
        // 
        // 内容如下
        // 
        // 
        // <h3>我才是loginAction 方法对应的视图文件!h3>
        // 

        // =================  2 =================
        // 
        // 主要内容
        // $this->view->setRenderLevel(2);
        // 
        // 内容如下
        // 
        // 
        // <h3>我才是loginAction 方法对应的视图文件!h3>
        // 

        // =================  3  =================
        // 
        // 显示控制器公共视图 和主要方法内容视图
        // $this->view->setRenderLevel(3);
        // 
        // 内容如下
        // 
        // 
        // <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!h2>
        // 
        //
        // 
        // 
        // 
        // <h3>我才是loginAction 方法对应的视图文件!h3>
        // 

        // =================  4  =================
        // 
        // 显示控制器公共视图 和主要方法内容视图
        // $this->view->setRenderLevel(4);
        // 
        // 内容如下
        // 
        // 
        // <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!h2>
        // 
        //
        // 
        // 
        // 
        // <h3>我才是loginAction 方法对应的视图文件!h3>
        // 


        // =================  5  =================
        // 
        // 开启所有渲染
        // $this->view->setRenderLevel(5);
        // 
        // <html>
        // <head>
        //  <title>测试 Phalcon的模板引擎title>
        //  <meta charset="utf-8" />
        // head>
        // <body>
        //  
        //  
        //  <h1>我是最外层的内容,下面的任意目录的模板都会继承我!h1>
        //  
        //  
        //  
        //  
        //  
        //  
        //  <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!h2>
        //  
        //  
        //  
        //  
        //  
        //  <h3>我才是loginAction 方法对应的视图文件!h3>
        //  body>
        // html>
        // 




        // =================  选择视图文件  =================
        //
        // 选择利用user login 这个视图文件来渲染这个方法
        // $this->view->pick("User/login");


        // =================  关闭视图  =================
        // 
        // $this->view->disable();


        // =================  直接跳转  =================
        // 
        // 直接跳转到index控制器的index 方法
        // $this->response->redirect('index/index');




        // =================  局部视图  =================
        // 
        // 在视图文件中 
        // 
        // shared 文件夹下的 header文件
        // 
        // $this->partial("shared/header")
        //
        // ==== 实例代码 ====
        // 
        // 
        // <html>
        // <head>
        //  <title>测试 Phalcon的模板引擎title>
        //  <meta charset="utf-8" />
        // head>
        // <body>
        //  php $this->partial("shared/header") 
        //  
        //  
        //  <h1>我是最外层的内容,下面的任意目录的模板都会继承我!h1>
        //  
        //  php echo $this->getContent(); 
        // 
        // 
        //  php $this->partial("shared/footer") 
        // body>
        // html>


        // =================  控制器传值给视图  =================
        // 
        // ===== 视图的setVar 方法  =====
        // 
        // 单个
        // $this->view->setVar("test", "test");
        // 
        // 多个 数组形式
        // $this->view->setVars(array(
        //      'title' => 'title',
        //      'content' => 'content'
        // ));
        // 
        // 魔术方法赋值
        // $this->view->ABC = 'ABC';

你可能感兴趣的:(PHP知识累积,开源产品系列)