我有以下内容:
Html::a('Link', ['some/route'], [
'class' => 'btn btn-lg btn-primary', // WORKS
'style' => 'padding: 100px;', // WORKS
'data-id' => 123, // DOES NOT WORK
'data' => [
'id' => 123, // DOES NOT WORK
],
]);
根据docs,data-*
助手中两个指定的Html::a
属性都应在HTML输出中呈现它们各自的属性,但它们却没有,我也不明白为什么。
renderTagAttributes上的Yii 2文档还规定了以下内容:
呈现HTML标记属性。
其值为布尔型的属性将被视为布尔型 属性。
值为null的属性将不会呈现。
属性值将使用encode()进行HTML编码。
“数据”属性在接收到 数组值。在这种情况下,数组将被“扩展”并列出 数据属性将被呈现。例如,如果'data'=> ['id'=> 1,'name'=>'yii'],则将显示为:data-id =“ 1” data-name =“ yii”。另外'data'=> ['params'=> ['id'=> 1, 'name'=>'yii'],'status'=>'ok']将呈现为: data-params ='{“ id”:1,“ name”:“ yii”}'data-status =“ ok”。
编辑:我正在尝试在GridView
列中进行此操作。
答案 0 :(得分:3)
好的,因为我在Html::a
列中使用了GridView
,所以您将不得不更改该列的输出格式。 html
不适用于数据属性,因此您需要切换到raw
:
[
'label' => 'Actions',
'format' => 'raw',
'value' => function($model) {
return Html::a('Link', ['some/route'], [
'class' => 'btn btn-lg btn-primary', // WORKS
'style' => 'padding: 100px;', // WORKS
'data-id' => 123, // WORKS
'data' => [
'id-second' => 123, // WORKS
],
]);
},
]