Всем привет, есть шаблон с плейсхолдерами, при генерации пдф, нужно заменить плейсхолдеры на данные из бд
вот как выглядит шаблон
следовательно данные нужно выводить в такой очередности, но столкнулся с проблемой
может быть много программ, следовательно эти переменные нужно заменить и подставить столько раз, сколько есть программ
'[nazvaniye_programmy]'
'[vid_obucheniya]'
'[vsego_chasov]'
'[DATA_S]'
'[DATA_PO]'
'[nomer_diploma]'
'[data_diploma]'
то что у меня получилось
public function printPortfolio()
{
$student = Student::with('studentprograms')->find(\request('student_id'));
$originalTemplate = PortfolioTemplate::first()->body;
$mainPlaceholders = [
'[FIO_1]' => $student->name,
'[data_rojdeniya]' => $student->birthday,
'[pasport]' => $student->passport,
'[INN]' => $student->inn,
'[SNILS]' => $student->snils,
'[Dokument]' => $student->diplom_place,
'[Nomer_diploma]' => $student->diplom_number,
'[Data_diploma]' => $student->diplom_date,
'[Adres]' => $student->registration_address,
'[Telefon]' => $student->phone,
'[E-mail]' => $student->email,
];
$finalOutput = '';
foreach ($student->studentprograms as $program) {
$programPlaceholders = [
'[nazvaniye_programmy]' => $program->program->name,
'[vid_obucheniya]' => $program->study_type,
'[vsego_chasov]' => $program->program_period,
'[DATA_S]' => $program->date_start ? Carbon::parse($program->date_start)->format('Y-m-d') : '',
'[DATA_PO]' => $program->date_finish ? Carbon::parse($program->date_finish)->format('Y-m-d') : '',
'[nomer_diploma]' => $program->diploma_number,
'[data_diploma]' => $program->diploma_date ? Carbon::parse($program->diploma_date)->format('Y-m-d') : '',
];
$programOutput = $originalTemplate;
foreach ($mainPlaceholders as $placeholder => $value) {
$programOutput = str_replace($placeholder, $value, $programOutput);
}
foreach ($programPlaceholders as $placeholder => $value) {
$programOutput = str_replace($placeholder, $value, $programOutput);
}
$finalOutput .= $programOutput;
}
$mpdf = new Mpdf();
$mpdf->WriteHTML($finalOutput);
$mpdf->Output('Document.pdf', 'I');
}
на данный момент есть 2 программы и он 2 раза дублирует общую информацию из
[FIO_1]
[data_rojdeniya]
[pasport]
[INN]
[SNILS]
[Dokument]
[Nomer_diploma]
[Data_diploma]
[Adres]
[Telefon]
[E-mail]
а нужно только программы