| 状态 | 草稿 |
|---|---|
| Todo | Add breadcrumb entry (2.1) and Proof read |
| 官方最后更新时间 | 2008/11/10 15:07 |
HTML 辅助函数可以被用于调用样式表,JavaScript,图像链接和文字链接。
'specialchars' 类似于 PHP 的 htmlspecialchars() 函数。不过还是有一些不同之处:
它提供两个参数:
实例:
$string = '<p>"I\'m hungry"—Cookie Monster said.</p>'; echo html::specialchars($string);
返回结果:
<p>"I'm hungry"&mdash;Cookie Monster said.</p>
如果设置第二个参数为 FALSE,那么存在的 HTML entities 会被保护。仔细地看 —。
echo html::specialchars($string, FALSE);
<p>"I'm hungry"—Cookie Monster said.</p>
'anchor' 创建一个 HTML 链接(<a href=””></a>),自动链接内部页面或者存在的外部站点,它有四个参数:
实例 1:
echo html::anchor('home/news', 'Go to our news section!');
返回结果:
<a href="http://localhost/home/news">Go to our news section!</a>
实例 2:
echo html::anchor('irc://irc.freenode.net/kohana', 'Join us on IRC!', array('style'=>'font-size: 20px;'));
返回结果:
<a href="irc://irc.freenode.net/kohana" style="font-size: 20px;">Join us on IRC!</a>
类似于 'anchor','file_anchor' 创建 HTML 链接(<a href=””></a>)链接非 Kohana 资源。因此,他总会带有站点 URL 的根域名(地址)。它有四个参数:
实例 1:
echo html::file_anchor('media/files/2007-12-magazine.pdf', 'Check out our latest magazine!');
返回结果:
<a href="http://localhost/media/files/2007-12-magazine.pdf">Check out our latest magazine!</a>
实例 2:
echo html::file_anchor('pub/index.html', 'The Public Linux Archive', array('id'=>'id432'), 'ftp');
返回结果:
<a href="ftp://localhost/pub/index.html" id="id432">The Public Linux Archive</a>
类似于 'anchor',但是它的第一个协议属性被最后一个代替,它有四个参数:
实例:
echo html::panchor('irc', '/kohana', 'Join us on our custom IRC!');
返回结果:
<a href="irc://localhost/kohana">Join us on our custom IRC!</a>
anchor_array($array) 创建一个以数组形式的链接(包含链接/标题参数)。参数:
实例:
echo Kohana::debug(html::anchor_array(array('home/news' => 'Go to our news section!', 'home/about' => 'Go to the about page')));
返回结果:
(array) Array
(
[0] => <a href="/kohana/index.php/home/news">Go to our news section!</a>
[1] => <a href="/kohana/index.php/home/about">Go to the about page</a>
)
'email($email)' 生成混淆模式的 Email 地址。它会把 Email 地址的所有字符转为 HTML 可识别的 16 进制或部分随机输出以防止 SPAM 骚扰,其参数:
实例:
echo Kohana::debug(html::email('test@mydomain.com'));
返回结果:
(string) test@mydomain.com
'mailto' 输出 <a href=“mailto:”></a> 标签同时转换保护原有 Email 地址。它有三个参数:
实例:
echo html::mailto('info@example.com');
返回结果:
<a href="mailto:info@example.com">info@example.com</a>
'meta($tag, $value = NULL)' 创建 meta 标签。它有两个参数:
实例:
echo html::meta('generator', 'Kohana 2.2'); echo html::meta(array('generator' => 'Kohana 2.2', 'robots' => 'noindex,nofollow'));
返回结果:
<meta name="generator" content="Kohana 2.2" /> <meta name="generator" content="Kohana 2.2" /> <meta name="robots" content="noindex,nofollow" />
'stylesheet'调用外部的 CSS 文件且可以忽略输入 .css 后缀。它有三个参数:
实例:
echo html::stylesheet(array ( 'media/css/default', 'media/css/menu' ), array ( 'screen', 'print' ), FALSE);
返回结果:
<link rel="stylesheet" href="http://localhost/media/css/default.css" media="screen" /> <link rel="stylesheet" href="http://localhost/media/css/menu.css" media="print" />
重要提示
Version 2.1
'link' 调用像是内部 feed 之类的文件并输出 <link> 标签。链接样式不也可以使用 <link> 但是 html::stylesheet() 辅助函数可以用下面的这些参数:
实例:
echo html::link(array ( 'welcome/home/rss', 'welcome/home/atom' ), 'alternate', array('application/rss+xml','application/atom+xml') , FALSE);
返回结果:
<link rel="alternate" type="application/rss+xml" href="http://localhost/welcome/home/rss" /> <link rel="alternate" type="application/atom+xml" href="http://localhost/welcome/home/atom" />
重要通知
'script' 调用外部的 JavaScript 文件且可以忽略输入 .js 后缀。它有两个参数:
实例:
echo html::script(array ( 'media/js/login', 'media/js/iefixes.js' ), FALSE);
返回结果:
<script type="text/javascript" src="http://localhost/media/js/login.js"></script> <script type="text/javascript" src="http://localhost/media/js/iefixes.js"></script>
重要提示
'image' 创建一个 'img' HTML 标签。
它有三个参数:
实例 1:
echo html::image('media/images/thumbs/01.png');
返回结果:
<img src="http://localhost/media/images/thumbs/01.png" /> echo html::image(array('src' => 'media/images/thumbs/01.png', 'width' => '100', 'height' => 100), array('alt' => 'Thumbnail', 'class' => 'noborder')); <img src="http://localhost/media/images/thumbs/01.png" width="100" height="100" alt="Thumbnail" class="noborder" />
实例 2 (使用 html::anchor 和 lightbox):
echo html::file_anchor('media/images/01.png', html::image('media/images/thumbs/01.png'), array('rel'=>'lightbox'));
返回结果:
<a href="http://localhost/media/images/01.png" rel="lightbox"><img src="http://localhost/media/images/thumbs/01.png" /></a>
重要提示
'attributes' 解析输出 HTML 标签的属性。它有一个参数:
Example 1:
echo html::attributes( array ( 'style' => 'font-size: 20px; border-bottom: 1px solid #000;', 'rel' => 'lightbox', 'class' => 'image' ) );
返回结果:
style="font-size: 20px; border-bottom: 1px solid #000;" rel="lightbox" class="image"
实例 2(使用 html::anchor):
echo html::file_anchor('home/images/01.png', 'See my picture!', html::attributes( array ( 'style' => 'font-size: 20px; border-bottom: 4px solid #000;', 'rel' => 'lightbox', 'class' => 'image' ) ) );
返回结果:
<a href="http://localhost/home/images/01.png" style="font-size: 20px; border-bottom: 4px solid #000;" rel="lightbox" class="image">See my picture!</a>
此函数以数组形式返回每个链接,参数:
实例:
echo Kohana::debug(html::breadcrumb());
返回结果:
Array ( [0] => <a href="http://localhost/ajax">Ajax</a> [1] => <a href="http://localhost/ajax/welcome">Welcome</a> [2] => <a href="http://localhost/welcome/text">Text</a> )
创建面包屑(Breadcrumbs)
创建面包屑很简单;下面是范例:
public function get_breadcrumbs() { global $breadcrumbs; $get_breadcrumbs = html::breadcrumb(); while (current($get_breadcrumbs)) $breadcrumbs .= current($get_breadcrumbs); // 检查是否为最后一个面包屑 if (key($get_breadcrumbs) < (count($get_breadcrumbs)-1)) { // 如果没有就添加一个面包屑 $breadcrumbs .= ' / '; } next($get_breadcrumbs); } return $breadcrumbs; }
可以把此函数放在 'MY_Controller' 库并在每个页面激活。显示面包屑(例如,从视图):
echo $this->get_breadcrumbs();
此函数显示的每个面包屑都是超级链接。尽管如何,我们或许想移除最后一个面包屑的链接(这样能更好的说明是当前页)并加粗字体。我们可以使用下面的方法:
public function get_breadcrumbs() { global $breadcrumbs; $get_breadcrumbs = html::breadcrumb(); while(current($get_breadcrumbs)) { // 检查是否为最后一个面包屑 if(key($get_breadcrumbs) < (count($get_breadcrumbs)-1)) { // 如果没有就添加一个面包屑 $breadcrumbs .= current($get_breadcrumbs).' / '; } else { // 如果是最后一个。移除链接并加粗字体 $breadcrumbs .= strip_tags("<strong>".current($get_breadcrumbs)."</strong>", "<strong>"); } next($get_breadcrumbs); } return $breadcrumbs; }
<box 100%> 注意:为了简化,上面的代码在库文件中包含了 HTML 的 <strong> 标签。如果使用 <spans> + CSS 样式代替前者对于改进代码会有很好的遵循 W3C。