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

时间:2018-12-13 11:09:57

标签: 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' => 123,                        // DOES NOT WORK
    ],
]);

根据docsdata-*助手中两个指定的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列中进行此操作。

1 个答案:

答案 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
            ],
        ]);
    },
]