当我的查询返回空值时,我期待视图显示消息'找不到数据'但是我收到错误消息:为foreach()提供的参数无效
这是控制器代码:
public function index()
{
$ctki = $this->ctki_model->get_all_ctki_data();
if ( !empty($ctki) ) {
$this->data['ctkiData'] = $ctki;
} else {
$this->data['ctkiData'] = 'Tidak ada data CTKI.';
}
$this->load->view($this->layout, $this->data);
}
这是视图代码:
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<th>No</th>
<th>Nama Lengkap</th>
<th>Jenis Kelamin</th>
<th>No KTP</th>
<th>No Passport</th>
<th>Kota</th>
<th>No Telepon</th>
<th>No HP</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php foreach($ctkiData as $row): ?>
<?php
// Link edit, hapus, cetak
$link_edit = anchor('program/administrasi/edit/'.$row->ID_CTKI, '<span class="glyphicon glyphicon-edit"></span>', array('title' => 'Edit'));
$link_hapus = anchor('program/administrasi/hapus/'.$row->ID_CTKI,'<span class="glyphicon glyphicon-trash"></span>', array('title' => 'Hapus', 'data-confirm' => 'Anda yakin akan menghapus data ini?'));
?>
<tr>
<td><?php echo ++$no ?></td>
<td><?php echo $row->Username ?></td>
<td><?php echo $row->Nama_Lengkap_User ?></td>
<td><?php echo $row->No_Telepon ?></td>
<td><?php echo $row->No_HP ?></td>
<td><?php echo $row->Level ?></td>
<td><?php echo format_is_blokir($row->Status_Blokir) ?></td>
<td><?php echo $link_edit.' '.$link_hapus ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
答案 0 :(得分:0)
用
$this->data['ctkiData'] = 'Tidak ada data CTKI.';
为此变量指定一个字符串。在您的模板中,您希望它是一个数组。
您可以通过不同方式解决此问题,例如,通过检入模板,数据是否为数组以及是否有任何项目。如果没有显示错误。
<?php
if (is_array($ctkiData) && count($ctkiData) > 0) {
foreach($ctkiData as $row): ?>
table here
<?php endforeach } else { ?>
error message here
<?php } ?>
(未经测试,但有类似的东西)。
更好的解决方案是使用像Twig这样的模板引擎,而不是在你的html模板中使用php代码。