例7-3---声名使用一个辅助函数
//在这个模板里使用一个特定的辅助函数
<?php echo use_helper('Text') ?>
...
<h1>描述</h1>
<p><?php echo auto_link_text($description) ?></p>
TIP 如果你要声明多个辅助函数组,给user_helper()函数传多个参数就可以了.
例如,要在一个模板里载入Text和Javascript辅助函数组,可以使用
<?php echo use_helper('Text','Javascript') ?>来声明.
有一些辅助函数在所有的模板里都可以使用,不需要事先声明.它们是以下的辅助函数组:
Helper: 用来载入辅助函数(use_helper() 函数本身就是一个辅助函数)
Tag: 基本的标签辅助函数,几乎所有的辅助函数都用到它
Url: 链接与URL管理辅助函数
Asset: 用来生成HTML<head>部分的内容,还包括简化使用外部资源(图片,Javascript,样式表)的函数
Partial:用来调用局部模板的辅助函数
Cache:管理代码片段的缓存
Form:表单辅助函数
这里列出的标准辅助函数,在每个模板中都会被自动载入,可以在setting.yml文件里面设置.所以如果你确定你不会用到Cache辅助函数组的辅助函数,或者你每次都需要用到Text组,你可以修改standard_helper这个设置.这会稍稍加快你的程序.但是你不能删除这个列表里的前四个辅助函数组(Helper,Tag,Url和Asset),因为模板引擎需要它们才能正常工作.所以在标准辅助函数设置(standard_helper)里找不到这四个辅助函数组.
TIP 如果你需要在模板之外使用辅助函数,你也可以通过sfLoader::loadHelper($helpers)来载入一个辅助函数组,$helers可以是辅助函数组的名字或几个辅助函数组的名字组成的数组.例如,如果你想在一个动作(action)里使用auto_link_text(),你需要首先执行sfLoader::loadHelper('Text').
symfony里还有很多其他的辅助函数,如果要讲完它们需要一整本书.辅助函数的最佳参考是在线API文档(http://www.symfony-project.com/api/symfony.html),所有的辅助函数都有详细的介绍,包括语法,参数,还有例子.
自己写辅助函数
symfony本身包含了大量的各类辅助函数,不过如果你在API文档里找不到你需要的辅助函数,你可能会想到自己写新的辅助函数,这很简单.
一组辅助函数(返回HTML代码的标准PHP函数)被存放在名叫FooBarHelper.php的文件里,FooBar是这个辅助函数组的名字.这个文件在app/myapp/lib/help/目录下(或者任意一个lib/目录下的helper/目录),这样做的目的是为了让use_helper('FooBar')辅助函数能自动载入这组辅助函数.
TIP 系统允许你覆盖symfony自己的辅助函数.例如,如果你想重新定义Text辅助函数的所有内容,只要在apps/myapp/lib/helper目录下建立TextHelper.php文件.当使用use_helper('Text')的时候symfony会使用你定义的辅助函数而不是系统默认的.但是请注意:由于原始文件没有载入,你需要重新定义这组辅助函数里所有的函数,否则某些系统的辅助函数就用不了了.