Zurmo(十六)之导出CSV

53 篇文章 0 订阅
51 篇文章 0 订阅

在Zurmo的list页面提供了一个导出CSV文件的功能,下面介绍如何实现:

在对应的DefaultController里的actionExport()方法如下:

public function actionExport() {
    $this->export ( 'UsersSearchView' );
}
从这里按住Ctal键可以去export方法的详细页面,在modules/zurmo/compontents/ZurmoModuleController.php 可以看到。

1:$modelToExportAdapter  = new ModelToExportAdapter($model); 获得对应的实例
2:$data[] = $modelToExportAdapter->getData();    获得对应的数据

在这个方法里有这两句代码,从第二句代码再进去看具体的实现,会跳到module/exports/adapters/ModelToExportAdapter.php里,在getData()方法里看具体的实现,这里有一个判断的条件,如下

$this->getRedBeanModelAttributeValueToExportValueAdapterClassName($attributeName)

去看这个代码的具体实现可以发现,这个方法其实就是构建一个文件的名字,就是到时候用来在自己模块里重导出具体的CSV文件的内容。

$type = ModelAttributeToMixedArrayTypeUtil::getType($this->model, $attributeName);
$adapterClassName = $type . 'RedBeanModelAttributeValueToExportValueAdapter';

从上面的代码可以看出:在User模块就是对应在users/adapter下的UserRedBeanModelAttributeValueToExportValueAdapter.php文件。

还要看getType()方法的具体实现:在protected/core/utils/ModelAttributeToMixedArrayTypeUtil.php里:
在这个方法看到代码:

if ($model->getRelationModelClassName($attributeName) == 'User')
{
      return 'User';
}

就是对应user的返回值。至此整个流程就大概走完了,现在回到getData()方法里:

 $adapter = new $adapterClassName($this->model, $attributeName);
 $adapter->resolveData($data);

这个resolveData()的具体实现就是在UserRedBeanModelAttributeValueToExportValueAdapter.php里,里面就是关于导出的CSV文件里的user的具体的属性的设置了。

这个博客说完可能还不是很清楚,这个也只是zurmo自带模块的导出设置,如果是自己自定义的模块的导出CSV还需要一些特殊的设置,在下一篇博客会结合一个具体的问题来说明。

如有不对,请指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值