2012-03-14 76 views
1

我在Zend Framework(版本1.10.6)应用程序中为我的表单使用装饰器,他们输出的元素具有属性帮手 W3C发现对HTML5 Doctype无效。Zend Form W3C validation with HTML5 Doctype

<input type="hidden" name="control" value="search" helper="formHidden" id="control"> 

W3C验证是给我这个错误: 属性助手不得在要素投入在这一点上。

+1

很好的解决,这是* *无效。你可以把它改为'数据帮手'吗?这是被允许的。 – Kornel 2012-04-05 15:32:28

+0

我尝试了一切,但没有成功,我仍然不知道Zend Framework使用了这个助手属性,所以我决定从核心中彻底删除它,因为我不知道任何其他可行的解决方案。 – tsergium 2012-04-08 12:50:33

回答

0

没有我发现这个问题的工作,所以经过几个小时的尝试不同的方法,我发现它更容易改变核心(是的,我知道这不是建议,但它仍然是一个解决方案)。

下面是答案(用于输入隐藏):

  • 的Zend /搜索/助手/ FormHidden.php
  • 在文件的结尾,你会发现这行代码

    return $this->_hidden($name, $value, $attribs); 
    
  • 添加以下代码之前

    unset($attribs['helper']); 
    

它能做什么是从施加到输入隐藏的元素属性的数组中删除该辅助属性。

这同样适用于所有表单元素。输入文本

例子:

  • 转到的Zend /搜索/助手/ FormText.php
  • 在文件的结尾,你会发现这几行代码

    $xhtml = '<input type="text"' 
         . ' name="' . $this->view->escape($name) . '"' 
         . ' id="' . $this->view->escape($id) . '"' 
         . ' value="' . $this->view->escape($value) . '"' 
         . $disabled 
         . $this->_htmlAttribs($attribs) 
         . $endTag; 
    
    return $xhtml; 
    
  • 加入此代码之前 it

    unset($attribs['helper']); 
    

这样做对所有的表单元素我的网站通过W3C HTML5的验证,所以我很满意这个解决方案,并希望它得到与Zend框架2.0

+0

这是一个非常非常糟糕的答案。切勿编辑框架源代码,只扩展它们的类并改变它的工作方式。 – 2016-11-26 22:26:29