Yii学习笔记之六(HTML生成帮助类api 翻译)
标签:yii
html帮助类 (Html helper)参考地址:
每一个web应用都会生成许多的HTML 标签,如果标签是静态的,他就能有效的避免PHP代码和HTML之间的混淆;但是当它是动态生成,它就开始变得棘手处理,不过它无需额外的帮助下完成。Yii 提供了这样的辅助 在一个form 提供了一系列静态的方法来处理生成 HTML标签组件, 以及他们的选项和内容.
提示: 入过你的标签是静态的你最好直接使用 HTML. 没必要再去调用Html helper 函数.
1.基础知识 由于通过字符串连接构建动态HTML越来越快但是非常凌乱,Yii提供了一套方法来操纵标签选项,并基于这些选项建立标签.
(1) 生成标签(Generating Tags)
生成标签的代码如下:
<?= Html::tag('p', Html::encode($user->name), ['class' => 'username']) ?>
第一个参数是标签名字.
第二个参数是标签的内容. 注意这里我们使用 Html::encode. 那是因为内容在HTML中不会自动编码.
第三个参数是可选的一个数组包含HTML的相关选项, 换言之, 就是该标签的相关属性. 数组中key是属性名,如class, href 或者 target 值就是该属性对应的值了.
上面的代码生成下面的内容:
<p class="username">samdark</p>
有些情况下你仅仅需要开始标签或者闭合标签,你可以使用
Html::beginTag() 和 Html::endTag() 方法.
选项用来在HTML辅助和各种部件的方法很多。在所有这些情况下,有一些额外的处理需要了解:
a. 如果值为null,对应的属性将不会被渲染.
b. 其属性值是布尔类型的将被视为布尔属性.
c. 属性的值将HTML编码使用 Html::encode().
d. 如果属性的值是一个数组, 它将会向下面这样处理:
如果属性是一个数据属性作为中列出
yii\helpers\Html::$dataAttributes,
就像 data 或 ng, 一个属性列表将会被渲染, 例如,
‘data‘ => [‘id‘ => 1, ‘name‘ => ‘yii‘]
会生成
data-id="1" data-name="yii";
而
‘data‘ => [‘params‘ => [‘id‘ => 1, ‘name‘ => ‘yii‘], ‘status‘ => ‘ok‘]
则生成
data-params=‘{"id":1,"name":"yii"}‘ data-status="ok".
注意在后一个例子中, 子数组会被渲染成 JSON 格式.
如果属性不是 data , 他将直接进行 JSON-encoded. 例如,
[‘params‘ => [‘id‘ => 1, ‘name‘ => ‘yii‘]
生成
params=‘{"id":1,"name":"yii"}‘.
当建立对HTML标记选项我们经常先从我们需要修改默认设置。为了添加或删除CSS类,
你可以使用以下命令:
<?php
$options = ['class' => 'btn btn-default'];
if ($type === 'success') {
Html::removeCssClass($options, 'btn-default');
Html::addCssClass($options, 'btn-success');
}
echo Html::tag('div', 'Pwede na', $options);
// 当 $type 是 'success' 成
// <div class="btn btn-success">Pwede na</div>
?>
为了与样式的样式属性达到同样的目的:
<?php
$options = ['style' => ['width' => '100px', 'height' => '100px']];
// 添加样式 style="width: 100px; height: 200px; position: absolute;"
Html::addCssStyle($options, 'height: 200px; position: absolute;');
// 添加样式 style="position: absolute;" 移除掉 height和 width
Html::removeCssStyle($options, ['width', 'height']);
?>
当使用 addCssStyle() 你能制定关于CSS属性的任意键值对的数组 就像
width: 100px; height: 200px;.
这些格式可以通过使用 cssStyleFromArray() 和
cssStyleToArray().进行相互转换。
removeCssStyle()方法接收一个数组的参数 列出想要移除的css属性名. 如果只有单个属性
可以直接指定成一个字符串.
为了让内容在HTML中正确安全的显示,需要对内容中的特殊字符进行编码.
在 PHP 中它是由 htmlspecialchars 和
htmlspecialchars_decode 函数来做的.
与直接使用这些方法的问题是,你必须指定编码和额外的标志所有的时间。因为标志是相同的所有时间和编码应匹配,以防止安全问题的应用中的一个,Yii中提供了两个紧凑和简单的使用方法:
<?php
$userName = Html::encode($user->name);
echo $userName;
$decodedUserName = Html::decode($userName);
?>
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70997.html