这个是对上一篇关于导出CSV文件补充:http://blog.csdn.net/tyrannoaurus/article/details/69663273
当我导出自己定义的model的信息(有关联其它的model),报错如下:
PHP的报错如下:
去到箭头指向的方法:
看到具体的代码可以发现这个DropDownRedBeanModelAttributeValueToExportValueAdapter类是针对CustomField的字段的。就是以序列化方式存储的状态值。具体关于的 CustomField 的详情可以看回博客:
http://blog.csdn.net/tyrannoaurus/article/details/53668286
这个报错的意思其实就是,有一个value的字段没有找到,所以出错了。因为如果你没有做特别的设置的话,这个样子所找到的model都是不是CustomField的,这个Model是没有value这个字段的。
这个时候要回到module/exports/adapters/ModelToExportAdapter.php下的getData()方法里,这里有几个判断,看注释就可以知道是关于model里的各种relations的选择的。
解决方法就是去到还要看getType()方法的具体实现:在里面的一个判断里加上自己定义的文件的名字:
if ($model->getRelationModelClassName($attributeName) == 'User')
{
return 'User';
}
elseif ($model->getRelationModelClassName($attributeName) == 'XXX')
{
return 'XXX'; 这里就是自己定义的内容
}
elseif ($model->getRelationModelClassName($attributeName) == 'Currency')
{
return 'Currency';
}
然后去到xxx/adapter下新建一个的xxxRedBeanModelAttributeValueToExportValueAdapter.php文件。里面的内容根据自己的模块改一改就行了。如果你想在CSV文件中导出自己想要的字段的话,就在下面的代码中做相应的改动就行了
$data[] = strval($this->model->{$this->attribute});
因为一般导出的model都是要关联其它model的嘛,我这次就是那些关联的model报的错,并不是数据什么的报错,是因为Zurmo本身关于这个功能的设置问题。然后在页面上导出CSV就不会报错了。
如有不对,请指正!