视图中可以调用模型可以吗?请看示例。读取数据的例子。
本帖最后由 lawzk 于 2012-10-14 20:12 编辑我上次看的一个视频教程,他用的就是视图中调用模型。我现在用的这个示例中,觉得在视图中调用模型比在控制器中调用要方便。但是这样好像又不符合MVC思想。
我这例子如下:
就是控制器读取数据库信息显示。但是我又要判断,如果数据库没有信息时,视图中应该显示“暂无记录”,如果有数据,就显示数据。
我现在用的是:
控制器:
public function account()
{
$data['accountlist']='';
$obj=$this->manager_model->get_account();
if($obj->num_rows>0)
{
$data['accountlist']=$obj->result();
}
$this->load->view('public/account',$data);
}
视图中用的是:
<?php if(is_array($accountlist)):?>
<?php foreach ($accountlist as $row):?>
<tr>
<td><?php echo $row->id;?></td>
<td><?php echo $row->name;?></td>
<td><?php echo $row->ip;?></td>
<td><?php echo $row->time;?></td>
</tr>
<?php endforeach;?>
<?php else:?>
<tr align=center><td colspan=5>暂无管理员</td></tr>
<?php endif;?>
我是通过 if(is_array($accountlist))来判断有没有数据的。感觉很别扭。如果我直接在数据调用模型。就可以直接使用$obj->num_rows来做为判断了。这个和以前的比较一致。
<?php
$obj=$this->manager_model->get_account();
?>
<?php if($obj->num_rows>0):?>
<?php foreach ($obj->result() as $row):?>
<tr>
<td><?php echo $row->id;?></td>
<td><?php echo $row->name;?></td>
<td><?php echo $row->ip;?></td>
<td><?php echo $row->time;?></td>
</tr>
<?php endforeach;?>
<?else:?><tr align=center><td colspan=5>暂无管理员</td></tr>
<?php endif;?>
请问我该使用哪个方法呢。我个人觉得在视图中调用模型比较好。但是如果不符合MVC思想,或者这样有弊端,我还是克服这个习惯吧。
我刚才做了个变通,就是在控制器中不传具体的值,而是传整个对象
控制器
public function account()
{
$data['result']='';
$obj=$this->manager_model->get_account();
$data['result']=$obj;
$this->load->view('public/account',$data);
}
视图:
<?php
if($result->num_rows()>0):
foreach ($result->result() as $row):?>
<tr>
<td><?php echo $row->id;?></td>
<td><?php echo $row->name;?></td>
<td><?php echo $row->ip;?></td>
<td><?php echo $row->time;?></td>
</tr>
<?php endforeach;?>
<?php else:?>
<tr align=center><td colspan=5>暂无管理员</td></tr>
<?php endif;?>
大家看看,这个方案如何?大家一般都用什么方案来处理类似事情呢?能否指点一下。 用第一种方案 我回复的“我刚才做了个变通,就是在控制器中不传具体的值,而是传整个对象”这一段。这个方法如何?还是要用我第一贴中的方法。感谢回复。
页:
[1]