在视图中, 我们可以使用Helpers来加快开发进度。
我们看一个简单的例子:
<?php echo input_tag('title);?>
上面的代码会生成下面的html代码
<input id="title" name="title" type="text" />
在视图中,一些Helpers不会被自动载入, 需要使用use_helper()进行声明, 我们可以这样用:
use_helper('Text');
use_helper('JavaScript');
或者象下面这样可以达到和上面一样的效果:
use_helper('Text', 'JavaScript');
在symfony中,Helpers按照用途分组, 比如Text, Tag, Url等Helpers内都包含相关的辅助函数。Helpers被存放在源码的/lib/helper/目录下。
目前symfony1.2支持的Helper有:
- Asset 用来声称html 的 head 中的内容
- Tag 标签辅助函数,用来生成html标签
- Url 链接和url相关函数
- Helper 用来载入Helper(use_helper()本身就是一个helper)
- Partial 用来调用局部模板的Helper
- Cache 缓存Helper
- Form 表单相关的Helper
- I18N 多语言相关
- Number
- Date
- DateForm
- Escaping
- Object
- ObjectAdmin
- Text
- Validaton
在视图中Helper, Tag, Url, Asset是不用被声明的, 视图必须使用这些基本函数才能正常工作,在默认设置中Partial,Cache,Form也是不需要声明的,该设置取决于apps/app/config/settings.yml中的standard_helpers选项。默认的standard_helpers选项如下:
standard_helpers: [Partial, Cache, Form]
我们可以在该选项中加入更多的自动加载的Helper, 或者如果你觉得你不会用到模板缓存,你可以将Cache从该选项中去掉, 这有助于加快程序运行速度。
在模板之外使用Helper
有些时候,我们不只要在视图中使用Helpers,比如我们要在action中生成一个内部链接,我们可以用下面的方法:
//symfony 1.0 & symfony 1.1
sfLoader::loadHelpers('Url');
$url = url_for('shop/search');
//symfony1.2
$this->getContext()->getConfiguration()->loadHelpers('Url');
$url = url_for('shop/search');
可以的话我想请教一个问题,1.2版本的symfony框架对表单验证是不是全部封装到form里面了,
还可不可以用配置yml的方式对表单进行验证
Comment 由 chain_cl — 2009-05-13 @ 18:25
目前看来是不可以的,基于form的表单验证也是写再form类中,你可以参考官方的《Form in Action》
Comment 由 maker — 2009-05-14 @ 09:04
[...] on invoke/execute tracing, enable full backtrace. –version -V 显示程序版本 可用的任务: help 显示任务的帮助信息 [...]
Pingback 由 科创网 » symfony命令行详解 — 2011-01-02 @ 12:54