这是我输出查询结果的方式,但我想知道这是不是正确的方法.. 因为我在我的视图中做了一些php逻辑,我更喜欢把它放在我的控制器中,不是吗?
有人可以告诉我这是否应该如何完成,或者我如何改进我的代码?
位指示:
public function reservations()
{
$this->load->model('admin_model');
$data = $this->admin_model->get_reservations();
$this->load->view('view_reservations', $data);
}
型号:
function get_reservations()
{
$this->db->select('*');
$this->db->from('t_reservation');
$data['query'] = $this->db->get();
return $data;
}
查看:
<div class="row">
<?php
foreach ($query->result() as $row):
for($i=0; $i<$row->days; $i++)
{
$date = date("d-m-Y", strtotime(date("Y-m-d", strtotime($row->date)) . " +".$i." day"));
$reservations[$i] = $date;
}
echo $row->name;
echo $row->price;
echo $reservations[0]. '-'.$reservations[$row->days-1];
endforeach;
?>
</div><!-- /.row -->
那么,有没有办法让我的视图中的php逻辑,put在我的控制器的某个地方,并有一个更清晰的视图?
答案 0 :(得分:3)
您的观点应该尽可能少的PHP。
您的控制器应具有$data
声明,您的模型应从数据库返回数据。
您的for循环似乎有点不必要。你真的只想要一个开始日期&#39;和&#39;结束日期&#39;。您可以将其放入模型或控制器中,具体取决于您是否希望每次调用get_reservations
时都返回这些内容。
<强>控制器强>
public function reservations()
{
$this->load->model('admin_model');
$data['reservations'] = $this->admin_model->get_reservations();
$this->load->view('view_reservations', $data);
}
<强>模型强>
function get_reservations()
{
$reservations = $this->db->get('t_reservation')->result();
foreach ($reservations as $reservation)
{
$reservation->start_date = date("d-m-Y", strtotime($reservation->date));
$reservation->end_date = date("d-m-Y", strtotime(date("Y-m-d", strtotime($reservation->date)) . " +".$reservation->days." day"));
}
return $reservations;
}
查看强> 我已经编辑了您的观点,因为我猜测您希望每个结果都在一个单独的行中吗?
<? foreach ($reservations as $reservations): ?>
<div class="row">
<?= $reservation->name ?>
<?= $reservation->price ?>
<?= $reservation->start_date ?> - <?= $reservation->end_date ?>
</div><!-- /.row -->
<? endforeach ?>
根据您希望如何显示数据,您可以在控制器中使用foreach循环,并加载多个视图:
<强>控制器强>
public function reservations()
{
$this->load->model('admin_model');
$reservations = $this->admin_model->get_reservations();
foreach ($reservations as $reservation)
{
$data['reservation'] = $reservation;
$this->load->view('view_reservation', $data);
}
}
查看强>
<div class="row">
<?= $reservation->name ?>
<?= $reservation->price ?>
<?= $reservation->start_date ?> - <?= $reservation->end_date ?>
</div><!-- /.row -->