在laravel excel中有条件地显示绘图



我有一个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;
}

最新更新