首页 > 其他 > 详细

Kartik Export —— 自动从filterModel中获得标题文字

时间:2020-11-24 23:00:14      阅读:29      评论:0      收藏:0      [点我收藏+]
Yii的Model是自带Label的,显示表格时会自动从Model中获取Label并显示,但是在导出到文件时,却并不能自动获取Label,经过跟踪发现,问题出在如下代码:

public function initExport()
{
    ...... 
    $this->setDefaultStyles(‘header‘);
    $this->setDefaultStyles(‘box‘);
    $this->filterModel = null;
    $this->setDefaultExportConfig();
    ...... 
}

注意到这里有个$this->filterModel = null,这就导致后面想根据filterModel获取字段标题的时候,就没有办法得到了。

修改方案,首先从Kartik Export继承一个子类,然后在子类重载initExport和getColumnHeader接口,代码如下:

    public function initExport()
    {
        // 这样处理,使得列标题可以跟grid一样,从filterModel中获取
        $filterModel = $this->filterModel;
        parent::initExport();
        $this->filterModel = $filterModel;
    }

    /** 通过filterModel的属性,获得字段的标题文字
     * @param \yii\grid\DataColumn $col
     * @return string
     */
    public function getColumnHeader($col)
    {
        $label = parent::getColumnHeader($col);
        if ($col->label === null) {
            if ($this->filterModel !== null && $this->filterModel instanceof Model) {
                $label = $this->filterModel->getAttributeLabel($col->attribute);
            }
        }
        return $label;
    }

Kartik Export —— 自动从filterModel中获得标题文字

原文:https://blog.51cto.com/lancelot/2554126

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!