我有一个Export,它看起来像这样:
class CatalogExport implements WithHeadings, WithDrawings, WithMapping, FromCollection
我想有条件地展示图纸,但我真的不知道怎么做。
我是这样尝试的:
public function drawings()
{
$drawing = new Drawing();
if($this->semnat === 1)
{
$drawing->setName('Semnatura');
$drawing->setDescription('This is my logo');
$drawing->setHeight(100);
$drawing->setCoordinates('F3');
$drawing->setPath(null);
$drawing->setPath(storage_path('app/public/' . $this->imgPath));
}
return $drawing;
}
对于除1以外的任何其他值,字段都将保持未完成状态,因此我认为可能没有显示任何图形。但后来我得到了这个错误:
File not found!
那么,除了创建两个导出类(一个实现WithDrawings,另一个不实现(之外,还有什么方法可以有条件地显示这个图形吗?(但会产生大量重复代码(
您的问题中似乎缺少一些代码。
不管怎样,我会重新调整你的绘图功能如下:
public function drawings()
{
if($this->semnat === 1 && $this->imgPath)
{
$drawing = new Drawing();
$drawing->setName('Semnatura');
$drawing->setDescription('This is my logo');
$drawing->setHeight(100);
$drawing->setCoordinates('F3');
$drawing->setPath(null);
$drawing->setPath(storage_path('app/public/' . $this->imgPath));
return $drawing;
}
return null;
}
此代码检查是否设置了imgPath
,如果semnat
不为1或imgPath
未设置,则返回null。
也许为时已晚,但解决方案是:
return []
例如:
public function drawings(){
$drawings = [];
if($logo == null)
return [];
$img_file = $logo;
$drawing = new Drawing();
$drawing->setName('image');
$drawing->setDescription('image');
$drawing->setPath($img_file);
$drawing->setHeight(70);
$drawing->setWidth(125);
$drawing->setOffsetX(5);
$drawing->setOffsetY(5);
$drawing->setCoordinates('A1');
$drawings[] = $drawing;
return $drawings;
}