2012-03-14 91 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