设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 问答求助
›
视图中可以调用模型可以吗?请看示例。读取数据的例子。 ...
返回列表
查看:
2376
|
回复:
3
视图中可以调用模型可以吗?请看示例。读取数据的例子。
[复制链接]
lawzk
lawzk
当前离线
积分
179
IP卡
狗仔卡
发表于 2012-10-14 20:04:16
|
显示全部楼层
|
阅读模式
本帖最后由 lawzk 于 2012-10-14 20:12 编辑
我上次看的一个视频教程,他用的就是视图中调用模型。我现在用的这个示例中,觉得在视图中调用模型比在控制器中调用要方便。但是这样好像又不符合MVC思想。
我这例子如下:
就是控制器读取数据库信息显示。但是我又要判断,如果数据库没有信息时,视图中应该显示“暂无记录”,如果有数据,就显示数据。
我现在用的是:
控制器:
PHP
复制代码
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
复制代码
<?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
复制代码
<?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思想,或者这样有弊端,我还是克服这个习惯吧。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
lawzk
lawzk
当前离线
积分
179
IP卡
狗仔卡
楼主
|
发表于 2012-10-14 20:10:44
|
显示全部楼层
我刚才做了个变通,就是在控制器中不传具体的值,而是传整个对象
控制器
PHP
复制代码
public
function
account
(
)
{
$data
[
'result'
]
=
''
;
$obj
=
$this
->
manager_model
->
get_account
(
)
;
$data
[
'result'
]
=
$obj
;
$this
->
load
->
view
(
'public/account'
,
$data
)
;
}
复制代码
视图:
PHP
复制代码
<?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
;
?>
复制代码
大家看看,这个方案如何?大家一般都用什么方案来处理类似事情呢?能否指点一下。
回复
支持
反对
使用道具
举报
显身卡
yunnysunny
yunnysunny
当前离线
积分
1852
IP卡
狗仔卡
发表于 2012-10-15 09:34:58
|
显示全部楼层
用第一种方案
回复
支持
反对
使用道具
举报
显身卡
lawzk
lawzk
当前离线
积分
179
IP卡
狗仔卡
楼主
|
发表于 2012-10-16 19:22:23
|
显示全部楼层
我回复的“我刚才做了个变通,就是在控制器中不传具体的值,而是传整个对象”这一段。这个方法如何?还是要用我第一贴中的方法。感谢回复。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页