在视图文件中,可以调用框架的视图基类提供的方法,可以动态创建URL链接、动态加载前端的资源等。
所谓动态链接,是指,链接不是固定的,当配置或者后端程序发生变更时,链接能够自动变更,比如:
<a href="/a/b.html">....</a> 这个超链接,当配置改写了地址规则时,所有相同格式的超链接地址能够随配置而变更,不需要逐个修改视图文件。
所谓动态加载前端资源,是指,根据一定的规则,自动生成前端文件的路径。比如,前端图片目录images目录发生变更时,只需要修改规则或者一个变量,即可修改所有视图文件的静态文件路径,而不需要逐个修改视图文件。
视图文件中,常用的方法大多来源于
框架的多个类(比如视图基类:framework/Hview.php),为了方便调用,框架对常用的方法进行了重写和单利模式封装,这些方法您可以在视图文件中直接调用。
常用的方法用例如下,可在视图文件中直接使用:
1,创建超链接地址:
<?php
$this->createUrl($route, $data);//其中可选参数还有:$output、$dir
?>
此方法来源于:framework/HView.php
使用说明:
<?php
/**
* 动态创建URL
* @param string $route 路由 路由的首字符为“/”表示绝对路由 否则表示当前模块的相对路由,举例如下:
* 1:假设当前controller目录所在的目录 为application(应用根目录),则:
* article/add 创建 /?_=article/add
* /article/add 创建 /?_=article/add
* article/add/admin 创建 /?_=article/add/admin
* /article/add/admin 创建 /?_=article/add/admin
*
* 2:假设当前controller目录所在的目录 admin模块,则格式有:
* article/add 创建 /?_=admin/article/add
* /article/add 创建 /?_=article/add
* article/add/abc 创建 /?_=admin/article/add/abc
* /article/add/abc创建 /?_=article/add/abc
* @param array $data 一维数组 链接中的其他参数
* @param boolen $output 是否输出创建的URL,如果true 则输出创建的URL,否则只返回URL不输出
* @param string $dir 强制修改URL的目录,默认为空 ,表示自动获取 。此参数一般不需要设置
* @return mixed $output决定是输出还是返回
* 注:此处输出或返回的实际URL受到地址重写的影响,详情见配置文件关于地址重写的描述
*/
protected function createUrl($route, $data=null, $output=true, $dir='')
?>
2,创建前端静态文件地址:
<?php
H::asset($fileName);//其中可选参数还有:$output
?>
此方法来源于:framework/HView.php
使用说明:
<?php
/**
* 输出或者获取当前视图对应的静态文件或目录
* @param string $fileName 文件名,支持绝对或者相对目录或者空字符串
* 绝对目录的根目录是指 /public
* 举例应用如下:
* 1,假设当前控制器类文件位于application/controller目录,则:
* $fileName 为空字符串 将输出 /public
* $fileName 值为 images/logo.jpg 将输出 /public/images/logo.jpg
* $fileName 值为 /css/style.css 将输出 /public/css/style.css
*
* 2,假设当前控制器类文件位于模块中,比如:application/module/admin/controller目录,则:
* $fileName 为空字符串 将输出 /public/module/admin
* $fileName 值为 images/logo.jpg 将输出 /public/module/admin/images/logo.jpg
* $fileName 值为 /css/style.css 将输出 /public/css/style.css
* @param boolen $output 是否输出 为true则输出而不返回 为false则返回而不输出
* @return mixed 根据$output决定输出还是返回
*/
public function asset($fileName='', $output=true)
?>
3,包含其他的视图文件:
<?php
include H::view()->path('/inc/header.php');
?>
此方法来源于:framework/HView.php
使用说明:
<?php
/**
*获取视图文件的绝对磁盘地址
* @param string $fileName 文件名,支持绝对或者相对目录,
* 绝对目录的根目录是指: application/view,
* 相对目录是指:application/view/当前控制器名
* “/”开头,表示绝对目录
* 此方法与asset方法类似,只不过,asset是用于创建前端静态文件地址,而此方法用于创建视图文件绝对地址
* 例说明如下(示例中 APPLICATION 表示 application所在的据对磁盘目录):
* 1,假设控制器类文件为 application/controller/IndexCtrl,则:
* $fileName 值为 glogal.php 则返回 APPLICATION/view/index/header.php
* $fileName 值为 ../inc/glogal.php 则返回 APPLICATION/view/inc/header.php
* $fileName 值为 /glogal.php 则返回 APPLICATION/view/header.php
*
* 2,假设控制器类文件为模块的控制器类文件 ,如: application/module/admin/controller/IndexCtrl,则:
* $fileName 值为 glogal.php 则返回 APPLICATION/view/module/admin/index/header.php
* $fileName 值为 ../inc/glogal.php 则返回 APPLICATION/module/admin/view/inc/header.php
* $fileName 值为 /glogal.php 则返回 APPLICATION/view/header.php
*
* @return string 返回视图文件的绝就路径
*/
public function path($fileName)
?>
4,HHtml框架类提供的方法
HHtml类位于 application/extension/HHtml.php,里面内置的方法全部为静态方法,也是视图文件中常用的方法。
使用方法示例:
<?php
HHtml::leftStr($str, 40, '...);
?>
HHtml中,全部方法介绍如下:
/**
* HFramework Html元素类
*/
class HHtml{
/**
* 根据字符串宽度,从左侧截取固定长度的字符串
* 大写字母、中文=2字符宽度
* 小写字母、数字、符号=1字符宽度
* @param string $str 待截字符串
* @param int $width 截取宽度
* @param string $more 省略号
* @return string 截取后的字符串
*/
public static function leftStr($str, $width=48, $more='...')
/**
* 生成 <input type="checkbox" ... /> 多选序列
* @param mixed $data 一维数组,数组键名对应为选项值,键值对应选项的显示文本
* @param string $name 表单项的名字
* @param mixed $selected 选中项值 可以是字符串(英文逗号分隔)或者一维数组
* @param string $extArgs 扩展属性
* @return string <input type="checkbox" ... /> 多选序列组成的HTML代码
*/
public static function createCheckbox($data, $inputName, $selected='', $extArgs='')
/**
* 生成 <input type="radio" ... /> 单选序列
* @param mixed $data 一维数组,数组键名对应为选项值,键值对应选项的显示文本
* @param string $name 表单项的名字
* @param string $selected 选中项值
* @param string $extArgs 扩展属性
* @return string <input type="radio" ... /> 多选序列组成的HTML代码
*/
public static function createRadio($data, $inputName, $selected='', $extArgs='')
/**
* 创建下拉菜单选项
* @param $data array 一维数组: 其中键名表示option中的value, 键值表示option中的text
* @param $selected mixed 默认选中的option的value
* @return string <option value=1>text</option> 组成的下拉选项的HTML代码
*/
public static function createOption($data, $selected='')
/**
* 返回带跳转按钮的翻页HTML
* @param int $total 总记录数
* @param int $rows 每页显示的行数
* @param string $page 翻页使用的关键字
* @return string 翻页字符串
*/
public static function page($total, $rows =16, $page='page')
/**
* 返回数字页码翻页信息
* @param int $total 总记录数
* @param int $rows 每页显示的行数
* @param int $num 显示的页码数字个数
* @param string $page 翻页使用的关键字,用于传递页码 如 page=1表示第一个
* @return array 翻页信息 格式为:
* array
* (
* [first] => /test/html1.html?page=1,//首页链接
* [pre] => /test/html1.html?page=1,//上一页链接
* [next] => /test/html1.html?page=2,//下一页链接
* [last] => /test/html1.html?page=10,//最后一页链接
* [all] => 10,//总页数
* [current] => 1,//当前页码
* [bar_start] => 1,//数字页码开始页码
* [bar_end] => 6,//数字页码截止页码
* [bar] => Array,//显示的页码数组
* (
* [0] => Array,//第一个页码信息
* (
* [code] => 1,//第一个页码
* [url] => /test/html1.html?page=1,//第一个页码的链接
* ),
* .........
* )
* )
*
*/
public static function pageNumBar($total, $rows =16, $num=5, $page='page')
}