ids,true);
$products = Product::query()->whereIn('id', $ids)->orderBy('series', 'asc')->get();
$my_template = new \PhpOffice\PhpWord\TemplateProcessor(storage_path('templates/template_maf.docx'));
$vars_for_template = [];
$i = 1;
foreach ($products as $product){
switch ($request->descr) {
case 1:
$descr = $product->characteristics . "\r\n" . $product->tech_description_short;
break;
case 2:
$descr = $product->characteristics . "\r\n" . $product->tech_description;
break;
case 3:
$descr = $product->tech_description_short;
break;
case 4:
$descr = $product->tech_description;
break;
case 5:
default:
$descr = $product->characteristics;
break;
}
$vars_for_template = array_merge($vars_for_template, [
'series#' . $i => $product->series,
'product_group#' .$i => $product->product_group,
'num#' . $i => $i,
'name#' . $i => $product->name,
'name_for_form#' . $i => $product->name_for_form,
'price#' . $i => number_format($product->price, 0, '', ' '),
'image#' . $i => $product->image_path,
'description#' . $i => str_replace("\n", '', $descr),
]);
$i++;
}
// dd($vars_for_template);
$my_template->cloneBlock('product_block', count($products), true, true, $vars_for_template);
foreach ($vars_for_template as $k => $v){
$file = public_path() . '/' . env('IMAGES_PATH') . '/' . $v;
if(str_starts_with($k, 'image') && file_exists($file) && $v !== ''){
$my_template->setImageValue($k, ['path' => $file, 'width' => 270, 'height' => 180]);
} else {
$my_template->setValue($k, $v);
}
}
// dd($vars_for_template);
$file = 'Наш_Двор_' . date('YmdHis') . '.docx';
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $file . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
ob_clean();
$my_template->saveAs("php://output");
Log::notice('Execution time: ' . microtime(true) - LARAVEL_START);
exit();
}
}