snllll 发表于 2010-7-6 19:55:57

求教如何在视图中调用控制器中的函数

本帖最后由 snllll 于 2010-7-6 20:00 编辑

学艺不精而且是某高人所谓的“半路出家”——说实话我到现在还不认识一个生来就是程序员的猛人,估计那位高人是的。

好,我描述一下问题,是这样的,我存储的会员ID在一个表里,我显示这张表的某一条记录的时候需要获取该会员的真实姓名,数据库示例如下:
--------
UserTable
----------------------------------
id    |   name……
----------------------------------
1   |   用户名

----------
TargetTable
----------------------------------
id    |   userid……
----------------------------------
1   |   1      ……

好的,我现在显示TargetTable中记录为1的记录的详细情况,我如何在视图中调用一个函数如<?php echo $DisplayUserName();?>实现我要的效果?
以前我都是用$data['username']=$this->X_Model->getUserNameById($userid);然后再视图中用<?=$username?>来实现,但是我现在认为这样做有点麻烦,是否可以更简单些?

我再次把框架想象的很神奇很强大,我也很懒惰很不愿意连篇累牍的写代码,CI的优雅我想也就是所谓的架构清晰、产出的代码整齐、效率较好的缘故。

所以,鄙视我会产生这样想法的人请您绕行。愿意讨论问题的朋友请不吝指教:handshake,感激不尽。

snllll 发表于 2010-7-6 19:59:01

当然还有一种方式,查询数据的时候join一下,但是如果我在TargetTable中有多处引用了userid呢?
比如我TargetTable是一张记录订单处理的表,里面有多个客服的操作,比如【下单】【确认订单】【收款】【发货】等等,那么我有join的时候这个时候怎么办?
事实上我所说的情形就是这样的一个情形。

snllll 发表于 2010-7-6 19:59:50

Ajax?这个倒是可以,但是能否不用它

snllll 发表于 2010-7-6 20:02:47

钩子?我学习了论坛中某位大牛关于实现钩子实现布局的方法,感觉忙乎了一天头脑有点迷糊,隐隐约约感觉是一种方法,可以解决,但是没实践,想出去吃完饭回来继续再说。
先把问题跑出来看看有哪位有更好的方法没。
先去吃饭~~

redtamo 发表于 2010-7-6 22:08:57

$data['username']=$this->X_Model->getUserNameById($userid);然后再视图中用<?=$username?>
为什么说这样作很麻烦呢?

snllll 发表于 2010-7-8 01:54:10

回复 5# redtamo


    是啊,我在2楼就说到了,这个问题。是很麻烦

saturn 发表于 2010-7-8 08:39:04

回复 6# snllll


老实说,你说了这么多,我没看明白你的问题在哪,你需要看到什么样的效果。
当然没有天生是程序员的人。没有人天生就是什么样,否则人生和人性的魅力就没了。

Hex 发表于 2010-7-8 12:21:09

楼主的问题,我认为应该做成 Helper,这才是视图应该使用的东西。

snllll 发表于 2010-7-13 00:31:26

回复 8# Hex


    是的,老大说的有道理,我之前用过speedphp的框架,里面就有个可以讲控制器中那个的函数注册到视图中引用的函数,感觉非常好用。
我不知道自己是不是带着SP的惯性思维在看待CI,但是感觉它的 那个解决问题的方式很好使用。就提了出来

114fh 发表于 2013-6-20 20:14:27

难道不能到视图里面在调用控制器的类吗?
页: [1]
查看完整版本: 求教如何在视图中调用控制器中的函数