【问题标题】:MVCGRID CSV Export errorMVCGRID CSV 导出错误
【发布时间】:2012-04-12 09:42:28
【问题描述】:

我正在尝试导出使用对象 MVCgrid 创建的网格。

我发现我可以将当​​前页面添加到对象“MVCGrid_Export”而不是提供导出按钮和功能的对象“MVCGrid”。

顺便说一句,我在导出过程中遇到了错误:

“致命错误:在 ..\agiletoolkit\atk4-addons\misc\lib\Export.php 第 42 行对非对象调用成员函数 getField()”

在那一行,“$b[] = $this->__getHeaderModel()->getField($a)->caption();”,我发现“$this->_getHeaderModel()" 是我要导出的模型的字符串,而不是该模型的对象,即我需要的项目。

这是我页面的代码:

class page_resultsShow extends Page {
function initMainPage() {
    $p = $this;
    $gr = $this->add('MVCGrid_Export');
    $gr->setModel('results',array('name','budget','bestapplicants'));

    $gr->addColumnMVC('name');
    $gr->addFormatter('name','link');
    $gr->addQuickSearch(array('name'));
    $gr->addPaginator(20); 
}

//details...
function page_details() {
    ... some code..
}

function defaultTemplate(){
    return array('page/results');
}

}

我想我需要添加一些信息来向网格解释正在处理的模型,但我没有找到如何!

感谢您的帮助

【问题讨论】:

    标签: php atk4 export-to-csv


    【解决方案1】:

    我们已经为 4.2 推送了更新的导出模块

    请更新 atk4-addons 和 atk4 以确保您在 master 分支上(现在是 4.2)。

    现在的语法有点不同,因为 Export 现在充当控制器。

    class page_index extends Page {
        function init(){
            parent::init();
            $c=$this->add("Grid");
            $c->setModel("A");
            $c->addPaginator(1);
            $c->add("Export");
    
            $c=$this->add("CRUD");
            $c->setModel("A");
            if ($c->grid){
                $c->grid->addPaginator(1);
            }
            $c->add("Export");
        }
    }
    

    从电子邮件到 atk4 组:

    // 假设你有网格

    $export = $grid->add("Export");
    

    // 这会将导出 xls 和导出 csv 按钮添加到您的网格中

    //如果你有crud:

    $export = $crud->add("Export");
    

    // 这会将导出 xls 和导出 csv 按钮添加到您的网格中

    现在,您可以通过创建轻松创建新的“解析器”

    Export_Parser_Xyz 类。

    然后将其添加到您的导出中:

    $export->add("Export_Parser_Xyz");
    

    非常重要的更新是它现在使用 dq 在它被分页器、过滤器等更改后,它可以准确地导出显示的内容。可选,是限制,默认情况下会被删除,但可以在解析器级别进行控制。

    这会自动将按钮添加到网格/crud 并处理来自相应网格/crud 数据源的数据流。

    注意!

    Export 仅适用于基于 dq 的 Grid,如果定义了模型,则尝试从模型的字段定义中加载标题。 PDF 解析器在这一点上被忽略了,因为它非常具体并且需要特定的第三方软件。

    您是否希望旧的导出模块按照lib/Export.php 中的说明启用兼容模式。


    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 2013-10-11
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多