【发布时间】:2019-08-15 13:06:34
【问题描述】:
我有一个将模型名称和类名称传递给视图的控制器方法。然后在另一个控制器方法中实例化这些类。在这种情况下,我使用的是 Laravel Excel 包。
public function index()
{
$exports = [
'Model name 1' => TestExport::class,
'Model name 2' => AnotherExport::class
];
return view('export', compact('exports'));
}
public function download(string $collection)
{
return Excel::download(new $collection(), 'Export.xlsx');
}
我的视图文件然后重定向到具有特定类名的download 控制器方法。
@foreach($exports as $name => $collection)
<a href="{{ action('ExportController@download', $collection) }}">Download</a>
@endforeach
由于我正在学习设计模式,并注意到它会违反 DRY 规则,所以我不想要另一个控制器方法或我下载的每个不同的 Excel 文件。
这是好的做法还是可以做得更好?
【问题讨论】: