为什么属性“排序”由HTML辅助生成 - 标记消失

问题描述:

我将创建一个表,看起来像一个标题:为什么属性“排序”由HTML辅助生成<th> - 标记消失

<th field="id" formatter="" styler="" sortable="true">#Asset</th> 

对于这一点,我用这个代码

$this->Html->tag('th',#Asset,'field'=>'id', [ 
    'formatter'=>'', 
    'styler'=>'', 
    'sortable'=>'true' 
]); 

但stangely,我得到这个结果:

<th field="id" formatter="" styler="" sortable="sortable">#Asset</th> 

如果我更改代码

$this->Html->tag('th',#Asset,'field'=>'id', [ 
    'formatter'=>'', 
    'styler'=>'', 
    'sortable'=>'' 
]); 

结果是更奇怪,属性 '排序' 消失:

<th field="id" formatter="" styler="">#Asset</th> 

谢谢你帮我。

sortable is/was a boolean attribute。这种属性false状态通过未定义该属性来表示,并且其状态由空值或属性名称来表示。实际值truefalse对于布尔属性无效。

对于向后/跨浏览器的兼容性,CakePHP使用后一个值变量。向HTML帮助器传递false -ish值(例如空字符串)将导致不添加该属性。

ps。 sortable去年一直是removed from the HTML standard,它不再存在于当前的HTML 5.1推荐标准中。

+0

好见,这使得事情说清楚我。 是否有使用此属性的解决方法,因为它用于数据网格的jQuery脚本中? – Gubberrr

+0

不要使用HTML帮助程序,也不要使用从紧凑属性列表中删除'sortable'的扩展模板(可通过helpers'templateClass'选项配置),或者修复jQuery脚本,使其正确处理布尔属性。 – ndm