用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2416|回复: 5
收起左侧

[已解决] 用了两周CI,感觉不错,有些迷惑请教各位

[复制链接]
发表于 2010-10-12 21:30:22 | 显示全部楼层 |阅读模式
MVC三者之间的数值传递到底有哪些方法?

目前我用到底方法有
C -> M/V 最简单:$this->ModuleName->FunctionName(parameters), $this->load>view(ViewName,parameters)
M -> C: 只需要在function里面return

V -> C:
1,通过Form post给 controller (在视图中表现为form)
2,通过URI段的方式(在视图中表现为链接)
3,请问是否有其他方式?

具体的问题描述,有一个form中含有3个button,功能各不相同,每个功能都需要读取form中的值。如果一个功能可以用submit提交给controller处理,另外两个功能该如何提交给controller呢?

先谢过了!
发表于 2010-10-12 22:27:54 | 显示全部楼层
本帖最后由 qi_ruo 于 2010-10-12 22:41 编辑

这个得用javascript写了 为每个按钮写一个onclick事件处理函数 指定表单的action 然后submit()就可以了
举个简单的例子:

  1. <form method="post">
  2. <input type="text" name="a" /><br />
  3. <input type="text" name="b" /><br />
  4. <button onclick="this.form.action='test/add';this.form.submit();">Add</button>
  5. <button onclick="this.form.action='test/plus';this.form.submit();">Plus</button>
  6. <button onclick="this.form.action='test/mul';this.form.submit();">Mul</button>
  7. </form>
复制代码
a.jpg
 楼主| 发表于 2010-10-12 22:33:27 | 显示全部楼层
多谢老兄的解答!

另外烦请再指教一下
从V 向C传递参数,除了下列方式是否还有其他方法
1,通过Form post给 controller (在视图中表现为form)
2,通过URI段的方式(在视图中表现为链接)
发表于 2010-10-13 12:59:09 | 显示全部楼层
用隐藏表单   在C层判断提交的值,但这是post提交
发表于 2010-10-13 14:08:28 | 显示全部楼层
本帖最后由 qi_ruo 于 2010-10-13 14:14 编辑

其实单纯的从页面的角度考虑这个问题更简单些
页面之间传递数据无非就是些超级全局变量比如 $_POST $_GET $_REQUEST $_SESSION $_COOKIE
表单可以以post和get两种方式传递变量
链接通过get传递变量
不用表单和链接 还是可以通过其他方式在页面间传递变量 比如用SESSION,COOKIE
或者还可以通过ajax的形式发送数据(但本质上还是post和get变量)

考虑用MVC的话 C向M传变量 本质上只是函数调用

C向V传变量 本质上只是页面中变量的封装(简单说就是只给视图需要的变量 也许这样更安全吧)
考虑到最简单的一种逻辑-视图分离的情况 只是把PHP代码和HTML代码分成两个文件
然后在PHP文件中把视图文件include进来 它们之间是不需要传什么变量的 因为它们本来就在一个页面
 楼主| 发表于 2010-10-13 21:37:05 | 显示全部楼层
感谢qi_ruo, ekliu兄两位。尤其是qi_ruo兄解释的非常清楚。

目前我使用的是ajax方式提交,因为要涉及网页的局部刷新。

本版积分规则