Yii2 data-*属性不适用于Yii 2中的Html::a()

Yii2 data-*属性不适用于Yii 2中的Html::a(),yii2,custom-data-attribute,Yii2,Custom Data Attribute,我有以下资料: Html::a('Link', ['some/route'], [ 'class' => 'btn btn-lg btn-primary', // WORKS 'style' => 'padding: 100px;', // WORKS 'data-id' => 123, // DOES NOT WORK 'data' => [ 'id'

我有以下资料:

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
    ],
]);
根据,在
Html::a
helper中指定的
data-*
属性都应该在Html输出中呈现各自的属性,但它们没有,我不明白为什么

Yii 2文件还说明了以下内容:

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
    ],
]);
呈现HTML标记属性。

值为布尔类型的属性将被视为布尔属性 属性

值为null的属性将不会被呈现

属性值将使用encode()进行HTML编码

“数据”属性在接收数据时会进行特殊处理 数组值。在这种情况下,数组将被“展开”并显示一个列表 将呈现数据属性。例如,如果“数据”=> 1,'name'=>'yii'],则将呈现:data id=“1” 数据名称=“yii”。此外,“数据”=>[“参数”=>[“id”=>1, “名称”=>“yii”],“状态”=>“确定”]将呈现为: 数据参数='{“id”:1,“name”:“yii”}'数据状态=“ok”



编辑:我正在尝试在
GridView
列中执行此操作。

好的,因为我在
GridView
列中使用了
Html::a
,所以您必须更改该列的输出格式
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
            ],
        ]);
    },
]