ome*_*itz 2 custom-data-attribute yii2
我有以下几点:
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
],
]);
Run Code Online (Sandbox Code Playgroud)
根据docs,helper 中的两个指定data-*属性都Html::a应该在 HTML 输出中呈现它们各自的属性,但它们没有,我不明白为什么。
关于renderTagAttributes 的Yii 2 文档还说明了以下内容:
呈现 HTML 标记属性。
值为布尔类型的属性将被视为布尔属性。
不会呈现值为 null 的属性。
属性的值将使用 encode() 进行 HTML 编码。
“data”属性在接收数组值时会被特殊处理。在这种情况下,数组将被“扩展”并呈现一个列表数据属性。例如,如果 '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列内执行此操作。
好的,因为我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
],
]);
},
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |