- FuelPHP 教程
- FuelPHP - 主页
- FuelPHP - 简介
- FuelPHP - 安装
- FuelPHP - 架构概述
- FuelPHP - 简单的 Web 应用程序
- FuelPHP - 配置
- FuelPHP - 控制器
- FuelPHP - 路由
- FuelPHP - 请求与响应
- FuelPHP - 视图
- FuelPHP - 演讲者
- FuelPHP - 模型和数据库
- FuelPHP - 表单编程
- FuelPHP - 验证
- 高级形式编程
- FuelPHP - 文件上传
- FuelPHP-Ajax
- FuelPHP - HMVC 请求
- FuelPHP - 主题
- FuelPHP - 模块
- FuelPHP - 包
- Cookie 和会话管理
- FuelPHP - 活动
- FuelPHP - 电子邮件管理
- FuelPHP - 分析器
- 错误处理和调试
- FuelPHP - 单元测试
- 完整的工作示例
- FuelPHP 有用资源
- FuelPHP - 快速指南
- FuelPHP - 有用的资源
- FuelPHP - 讨论
FuelPHP - 视图
视图是 MVC 应用程序的表示层。它将应用程序逻辑与表示逻辑分开。当控制器需要生成 HTML、CSS 或任何其他内容时,它将任务转发给视图引擎。
FuelPHP 提供了一个简单而灵活的类 View,它具有视图引擎的所有必要功能。View类支持视图文件的渲染。查看文件是一个嵌入了 PHP 指令的 HTML 页面。视图文件的变量可以使用 View 类作为 PHP 数组进行设置,并使用数组的键在视图文件中引用。让我们检查一下 View 类的一些重要方法。
锻造
目的- 创建一个新的视图对象
参数- 以下是参数
$file - 视图文件相对于视图文件夹的路径,fuel/app/views
$data - 值数组
$filter - 设置自动编码,默认为主配置文件中的设置
返回- 视图的实例
例如,
$view = View::forge ('path/to/view', array( 'title' => "Show employee, 'employees' => $employees, ));
自动过滤器
目的- 设置是否对数据进行编码
参数- 以下是参数
$filter - 真/假
返回- 当前视图对象
例如,
$view->auto_filter(); $view = $view->auto_filter(false);
设置文件名
用途- 允许设置或更改视图文件。
参数- 以下是参数 -
$file - 相对于视图文件夹、fuel/app/views 的视图文件路径
返回- 当前视图对象
例如,
$view = new View(); $view>set_filename('path/to/view');
放
目的- 设置一个或多个变量的值
参数- 以下是参数
$key - 变量名称或值数组
$value - 值 / null
$filter - 编码设置,true / false
返回- 当前视图对象
例如,
$view = new View(); $view->set(array('name' => 'Jon'));
设置全局
set_global 与set类似,不同之处在于它适用于所有视图并且所有视图都可以访问变量。这是一个静态方法。
View::set_global('name', 'Jon', false);
设置安全
目的- 设置一个或多个启用安全编码的变量的值。
参数- 以下是参数 -
$key - 变量名称或值数组
$value - 值 / null
返回- 当前视图对象
例如,
$view = new View(); $view->set_safe(array('name' => 'Jon'), null);
得到
目的- 获取一个或多个变量的值
参数- 以下是参数
$key - 变量名称
$default - 如果找不到密钥则返回默认值
返回- 输入键的值
例如,
$view = new View(); $name = $view>get('name'); // name = 'Jon'
使成为
目的- 通过将视图文件与局部和全局变量合并来将视图文件渲染为字符串
参数- 以下是参数 -
$file - 视图文件名
返回- 呈现的视图文件作为字符串
例如,
$html = View::forge()->render('/path/to/view');
创建视图
为了理解视图,让我们修改操作方法,控制器的action_show , Controller_Employee。
员工.php
<?php class Controller_Employee extends Controller { public function action_show() { return View::forge('employee/show'); } }
现在在views目录中创建一个文件夹employee,位于fuel/app/views。然后,在employee文件夹中创建一个文件show.php并添加以下代码。
显示.php
<h3> My first view </h3>
现在,请求 URL http://localhost:8080/employee/show,它会产生以下结果。
将数据传递给视图
我们可以使用前面讨论的 View 方法将数据传递到视图。下面是一个简单的例子。
员工.php
class Controller_Employee extends Controller { public function action_show() { $data = array(); //stores variables going to views $data['name'] = ‘Jon’; $data[‘job’] = ‘Designer’; //assign the view to browser output return View::forge('employee/show', $data); } }
现在,在视图文件中添加更改。
显示.php
<html> <body> Hello, <?php echo $name; ?>. Your job is, <?php echo $job; ?>. </body> </html>
请求 URL 后,它将显示名称和职位,如下所示 -
查看过滤器
视图使用输出编码来传递您想要的任何内容。如果要传递未过滤的数据,我们可以使用set方法。
员工.php
class Controller_Employee extends Controller { public function action_show() { $view = \View::forge('employee/show'); $view->set('name', 'Jon', true); $view->set('job', '<em>Designer</em>', false); return $view; } }
请求URL后,将以强调方式显示职位详细信息,如下。
嵌套视图
FuelPHP 支持嵌套视图。在嵌套视图中,一个视图可以包含一个或多个视图。要在另一个视图中设置视图,我们可以使用 render 方法,如下所示。
员工.php
class Controller_Employee extends Controller { public function action_nestedview() { //assign variables $data = array(); $data['title'] = 'Home'; $data['name'] = 'Jon'; $data['job'] = 'Designer'; $views = array(); $views['head'] = View::forge('head', $data)->render(); $views['content'] = View::forge('employee/show', $data)->render(); return View::forge('layout', $views, false)->render(); } }
燃料/应用程序/视图/layout.php
<html> <head> <?php echo $head; ?> </head> <body> <?php echo $content; ?> </body> </html>
燃料/应用程序/视图/head.php
<title> <?php echo $title; ?> </title>
燃料/应用程序/视图/员工/show.php
Hello, <?php echo $name; ?>. Your job is, <?php echo $job; ?>.
请求 URL http://localhost:8080/employee/nestedview并检查源视图后,它给出以下代码。
<html> <head> <title>Home</title> </head> <body> Hello, Jon. Your job is, Designer. </body> </html>
模板控制器
FuelPHP 提供了一个具有内置布局概念的控制器 Controller_Template。布局概念是使用控制器的before()和after()方法完成的。要使用模板控制器,我们需要使用Controller_Template而不是Controller来扩展控制器。在使用after() / before()方法时,我们需要调用parent::before和parent::after,否则模板会崩溃。
<?php class Controller_Test extends Controller_Template { public function before() { parent::before(); // do stuff } public function after($response) { $response = parent::after($response); // do stuff return $response; } }
模板.php
它是 Fuel 中的默认模板文件。模板文件用于调用JS、CSS、HTML,以及调用视图部分。它位于Fuel/app/views/。模板用于将视图包装在带有页眉、页脚、侧边栏等的布局中。我们可以在操作方法中使用 $template 变量更改默认模板,如下所示。
燃料/应用程序/类/控制器/test.php
<?php class Controller_Test extends Controller_Template { public $template = 'template_test'; public function action_index() { $this->template->title = 'Example Page'; $this->template->content = View::forge('test/index'); } }
燃料/应用程序/视图/template_test.php
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title><?php echo $title; ?></title> <?php echo Asset::css('bootstrap.css'); ?> </head> <body> <div> <?php echo $content; ?> </div> </body> </html>
燃料/应用程序/视图/测试/index.php
<h3>My Test page</h3>
现在,请求 URL http://localhost:8080/test,它会产生以下结果。
结果
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title>Example Page</title> <link type = "text/css" rel = "stylesheet" href = "http://localhost:8080/assets/css/bootstrap.css?1464964766" /> </head> <body> <div> <h3>My Test page</h3> </div> </body> </html>
生成视图页面
您可以使用 Fuel 的 Oil 控制台生成视图页面。以下是基本语法。
oil g controller <controller-name> <page1> <page2> ..
要生成具有主页和登录页面的管理控制器,请使用以下命令。
oil g controller admin home login
结果
Creating view: /path/to/app/fuel/app/views/admin/home.php Creating view: /path/to/app/fuel/app/views/admin/login.php Creating controller: /path/to/app/fuel/app/classes/controller/admin.php