想规范一下代码的写法, 想请教一下如果不封装到$s_table的话,该如何去做,谢谢~
目前的写法是这样的,部分代码如下
if(isset($list) && count($list) > 0){
$s_table = '';
$s_table .= '<table class="table">
<thead>
<tr>';
$s_table .= '<th>クラスID</th>
<th>作成日</th>
<th>営業担当</th>
<th>クライアント名</th>
<th>研修名称</th>
<th>研修名称(ローマ字)</th>
<th>研修形態</th>
<th>デリバリー</th>
<th>研修言語</th>
<th>研修カテゴリ</th>
<th>研修人数</th>
<th>授業単価</th>
<th>請求単位</th>
</tr>
</thead>
<tbody>';
foreach ($list as $info){
$s_table .= '<tr>';
$s_table .= '<td><a href="'.get_url_top().'/app/conf?id='.$info->id.'">'.$info->id.'</a></td>';
$s_table .= '<td>'.$info->date.'</td>';
$s_table .= '<td>'.$info->staff_name.'</td>';
$s_table .= '<td><a href="'.get_url_top().'/client/conf?id='.$info->client_id.'">'.$info->client_name.'</a></td>';
$s_table .= '<td><a href="'.get_url_top().'/app/conf?id='.$info->id.'">'.$info->name.'</a></td>';
$s_table .= '<td><a href="'.get_url_top().'/app/conf?id='.$info->id.'">'.$info->name_romaji.'</a></td>';
$s_table .= '<td>' . MasterCode::get_one_by_type_code(CODE_TYPE_LESSON_FORM, $info->form)->name . '</td>';
$s_table .= '<td>'.$info->type_str.'</td>';
$s_table .= '<td>'.$info->lesson_language.'</td>';
$s_table .= '<td>'.$info->lesson_category.'</td>';
$s_table .= '<td>'.$info->number_of_people.'</td>';
$s_table .= '<td>'.$info->lesson_unit_price.'</td>';
$s_table .= '<td>'.$info->bill_type_str.'</td>';
$s_table .= '<td>';
$s_table .= '</tr>';
}
$s_table .= '</tbody></table>';
}else if(isset($list) && count($list) <= 0){
$s_table = '';
}
csv导出部分:
<form class="mt20" method="post" action="">
<input type="hidden" name="data" value="<?php echo htmlspecialchars($s_table, ENT_QUOTES); ?>">
<input type="hidden" name="action" value="csv_out">
<input class="btn btn-primary" type="submit" value="CSVで保存">
</form>
如果将封装规范成HTML的话
<table class="table">
<thead>
<tr>
<th>クラスID</th>
<th>作成日</th>
<th>営業担当</th>
<th>クライアント名</th>
<th>研修名称</th>
<th>研修名称(ローマ字)</th>
<th>研修形態</th>
<th>デリバリー</th>
<th>研修言語</th>
<th>研修カテゴリ</th>
<th>研修人数</th>
<th>授業単価</th>
<th>請求単位</th>
</tr>
</thead>
<tbody>
<?php foreach ($list as $info) : ?>
<tr>
<td><a href="<?php echo get_url_top(); ?>/app/conf?id=<?php echo $info->id; ?>"><?php echo $info->id; ?></a></td>
<td><?php echo $info->date; ?></td>
<td><?php echo $info->staff_name; ?></td>
<td><a href="<?php echo get_url_top(); ?>/client/conf?id=<?php echo $info->client_id; ?>"><?php echo $info->client_name; ?></a></td>
<td><a href="<?php echo get_url_top(); ?>/app/conf?id=<?php echo $info->id; ?>"><?php echo $info->name; ?></a></td>
<td><a href="<?php echo get_url_top(); ?>/app/conf?id=<?php echo $info->id; ?>"><?php echo $info->name_romaji; ?></a></td>
<td><?php echo MasterCode::get_one_by_type_code(CODE_TYPE_LESSON_FORM, $info->form)->name; ?></td>
<td><?php echo $info->type_str; ?></td>
<td><?php echo $info->lesson_language; ?></td>
<td><?php echo $info->lesson_category; ?></td>
<td><?php echo $info->number_of_people; ?></td>
<td><?php echo $info->lesson_unit_price; ?></td>
<td><?php echo $info->bill_type_str; ?></td>
<td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php elseif (isset($list) && count($list) <= 0) : ?>
<div class="alert alert-warning mt20">該当するデータがありません</div>
<?php endif; ?>
该如何修改此处或是有其他的办法
感谢解答与指导
将table放到一个容器中,然后获取容器的html赋值给表单也一样的,要不php中字符串连接组成html比较麻烦
$fileName = date('Y-m-d-H-i-s', time()) . ".csv";
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');
$csv_header = ['研修言語', '完善这里的字段'];
mb_convert_variables('GBK', 'UTF-8', $csv_header);
fputcsv($fp, $csv_header);
foreach ($list as $row) {
mb_convert_variables('GBK', 'UTF-8', $row);
fputcsv($fp, $row);
unset($row);
}
fclose($fp);
$csv_header 的长度,要和 $list 一一对应
前端框架有vue,react
是只需要把数据交给前端控件
由控件根据相应的配置进行渲染。
如果不用控件,最直接的方法就是拼接html