ShopCMS 开发文档
HFramework 开发文档

5.2 视图文件中常用的方法

在视图文件中,可以调用框架的视图基类提供的方法,可以动态创建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')
}

关键词:视图文件 模板文件 动态超链接 动态加载 前端资源 单例模式
阅读:2593 | 发布时间:2018-12-30 19:52