注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网事

备忘录

 
 
 

日志

 
 

2010年4月7日  

2010-04-07 12:14:54|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

zend_form是zf中用于生成表单的一个组件 他有2个很晕的特点 第一就是慢 速度非常慢 有2个text段 1个submit按钮的表单生成出来大约需要半秒的时间 这是很慢的 第二是思路很奇怪 虽然zf本身就是为了mvc而生的 form这部分应该算做model 但是 zend_form有自己的view层 也就是装饰器 decorator

这里就说下装饰器 zend_form是最外层 先不说这个 我们先说里面被包裹的zend_form_element 也就是比如按钮 text字段 password字段 checkbox这类东西的装饰器 默认顺序是四个 viewhelper,errors,htmltag,label 这四个具体的意思是 viewhelper是一个助手 他会识别element种类 生成基础代码 比如zend_form_element_text是一个字段输入框体 viewhelper会自动帮你找到formtext这个额外的助手 产生代码如下

代码如下

  1. <input name="foo" id="foo" type="text" value="" />

接下来errors装饰器接管 如果有表单提交的错误反馈 会渲染出来 产生如下

代码如下

  1. <input name="foo" id="foo" type="text" value="" />

  2. <div class="error">

  3. <ul>

  4.     <li>...</li>

  5. </ul>

  6. </div>

接着htmltag装饰器接手 默认就是加上dd标签

代码如下

  1. <dd><input name="foo" id="foo" type="text" value="" />

  2. <div class="error">

  3. <ul>

  4.     <li>...</li>

  5. </ul>

  6. </div>

  7. </dd>

最后 如果label被设置 label装饰器 启动增加一个默认dt标签

代码如下

  1. <dt><label for="foo" class="optional">Foo</label>

  2. <dt>

  3. <dd><input name="foo" id="foo" type="text" value="" />

  4. <div class="error">

  5. <ul>

  6.     <li>...</li>

  7. </ul>

  8. </div>

  9. </dd>

于是 一个element就这样渲染出来了  eee

zend_form渲染器就是 先渲染每一个element 如上步骤 然后渲染htmltag 然后渲染form 一个表单就这样出来了 .......zend_form可以和zend_dojo以及zendx_jquery的装饰器有机的统一 不过jquery部分目前稍微弱点 dojo的部分目前整合的最强大

  评论这张
 
阅读(172)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018