输出一个变量到视图
// 控制器代码
$test_str= 'test';
$this->view->test_str= $test_str;
// 视图文件代码
<p>变量test_str:<?php echo $test_str; ?></p>
视图的层级关系
在Phalcon 中 视图文件会遵循一个层级关系
每次调用视图都会按照层级关系调用的
流程如下
先调用视图文件夹下的index.volt
(.phtml 我开启了volt 模板引擎所以后缀是这个)
文件路径views\index.volt
再调用内层控制器公告视图文件
例如 控制器 User 那么调用的文件是views\layouts\user.volt
最后调用该方法的 视图文件
例如我访问的是 User控制器的 login 方法 那么调用的文件是 views\user\test.volt
实例代码
// 控制器代码
<?php
use Phalcon\Mvc\Controller;
class UserController extends ControllerBase
{
// 登陆
public function loginAction(){
}
}
/* 视图文件代码 */
// views\index.volt
<!DOCTYPE html>
<html>
<head>
<title>测试 Phalcon的模板引擎</title>
<meta charset="utf-8" />
</head>
<body>
<!--
目录路径:views\index.volt
所有调用都会经过我
这里可以放置一些公共的资源
-->
<!-- 外侧模板开始 可以用来做公共部分的模板 -->
<h1>我是最外层的内容,下面的任意目录的模板都会继承我!</h1>
<!-- 外层模板结束 -->
<?php echo $this->getContent(); ?>
</body>
</html>
// views\layouts\user.volt
<!--
目录路径:views\layouts\user.volt
user 控制器的所有视图文件都会经过我
这里可以放置 针对User控制器视图文件 的公共资源
-->
<!-- User 控制器内容视图开始 -->
<h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!</h2>
<!-- User 控制器内容视图结束 -->
<?php echo $this->getContent(); ?>
// views\user\login.volt
<!--
目录路径:views\user\login.volt
这里是test 的内容部分
我负责显示每个方法的个性化内容
-->
<!-- test方法视图开始 -->
<h3>我才是testAction 方法对应的视图文件!</h3>
<!-- test方法视图结束 -->
最后生成的html代码
<!DOCTYPE html>
<html>
<head>
<title>测试 Phalcon的模板引擎</title>
<meta charset="utf-8" />
</head>
<body>
<!--
目录路径:views\index.volt
所有调用都会经过我
这里可以放置一些公共的资源
-->
<!-- 外侧模板开始 可以用来做公共部分的模板 -->
<h1>我是最外层的内容,下面的任意目录的模板都会继承我!</h1>
<!-- 外层模板结束 -->
<!--
目录路径:views\layouts\user.volt
user 控制器的所有视图文件都会经过我
这里可以放置 针对User控制器视图文件 的公共资源
-->
<!-- User 控制器内容视图开始 -->
<h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!</h2>
<!-- User 控制器内容视图结束 -->
<!--
目录路径:views\user\login.volt
这里是login方法的内容部分
我负责显示每个方法的个性化内容
-->
<!-- login方法视图开始 -->
<h3>我才是loginAction 方法对应的视图文件!</h3>
<!-- login方法视图结束 -->
</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);
//
// 内容如下
// <!--
// 目录路径:views\user\test.volt
// 这里是login 的内容部分
// 我负责显示每个方法的个性化内容
// -->
// <!-- login 方法视图开始 -->
// <h3>我才是loginAction 方法对应的视图文件!</h3>
// <!-- login 方法视图结束 -->
// ================= 2 =================
//
// 主要内容
// $this->view->setRenderLevel(2);
//
// 内容如下
// <!--
// 目录路径:views\user\login.volt
// 这里是login 的内容部分
// 我负责显示每个方法的个性化内容
// -->
// <!-- login方法视图开始 -->
// <h3>我才是loginAction 方法对应的视图文件!</h3>
// <!-- login方法视图结束 -->
// ================= 3 =================
//
// 显示控制器公共视图 和主要方法内容视图
// $this->view->setRenderLevel(3);
//
// 内容如下
// <!--
// 目录路径:views\layouts\user.volt
// user 控制器的所有视图文件都会经过我
// 这里可以放置 针对User控制器视图文件 的公共资源
// -->
// <!-- User 控制器内容视图开始 -->
// <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!</h2>
// <!-- User 控制器内容视图结束 -->
//
//
// <!--
// 目录路径:views\user\login.volt
// 这里是login 的内容部分
// 我负责显示每个方法的个性化内容
// -->
// <!-- login方法视图开始 -->
// <h3>我才是loginAction 方法对应的视图文件!</h3>
// <!-- login方法视图结束 -->
// ================= 4 =================
//
// 显示控制器公共视图 和主要方法内容视图
// $this->view->setRenderLevel(4);
//
// 内容如下
// <!--
// 目录路径:views\layouts\user.volt
// user 控制器的所有视图文件都会经过我
// 这里可以放置 针对User控制器视图文件 的公共资源
// -->
// <!-- User 控制器内容视图开始 -->
// <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!</h2>
// <!-- User 控制器内容视图结束 -->
//
//
// <!--
// 目录路径:views\user\login.volt
// 这里是login 的内容部分
// 我负责显示每个方法的个性化内容
// -->
// <!-- login方法视图开始 -->
// <h3>我才是loginAction 方法对应的视图文件!</h3>
// <!-- login方法视图结束 -->
// ================= 5 =================
//
// 开启所有渲染
// $this->view->setRenderLevel(5);
// <!DOCTYPE html>
// <html>
// <head>
// <title>测试 Phalcon的模板引擎</title>
// <meta charset="utf-8" />
// </head>
// <body>
// <!--
// 目录路径:views\index.volt
// 所有调用都会经过我
// 这里可以放置一些公共的资源
// -->
// <!-- 外侧模板开始 可以用来做公共部分的模板 -->
// <h1>我是最外层的内容,下面的任意目录的模板都会继承我!</h1>
// <!-- 外层模板结束 -->
//
//
//
// <!--
// 目录路径:views\layouts\user.volt
// user 控制器的所有视图文件都会经过我
// 这里可以放置 针对User控制器视图文件 的公共资源
// -->
// <!-- User 控制器内容视图开始 -->
// <h2>我处在内层文件中,只要是user控制器中的视图文件,都会经过我!</h2>
// <!-- User 控制器内容视图结束 -->
//
//
// <!--
// 目录路径:views\user\login.volt
// 这里是login 的内容部分
// 我负责显示每个方法的个性化内容
// -->
// <!-- login方法视图开始 -->
// <h3>我才是loginAction 方法对应的视图文件!</h3>
// <!-- login方法视图结束 --></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")
//
// ==== 实例代码 ====
//
// <!DOCTYPE html>
// <html>
// <head>
// <title>测试 Phalcon的模板引擎</title>
// <meta charset="utf-8" />
// </head>
// <body>
// php $this->partial("shared/header")
// <!--
// 目录路径:views\index.volt
// 所有调用都会经过我
// 这里可以放置一些公共的资源
// -->
// <!-- 外侧模板开始 可以用来做公共部分的模板 -->
// <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';