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

关于不同控制器载入相同视图

[复制链接]
发表于 2009-4-23 01:21:27 | 显示全部楼层 |阅读模式
一个登录流程.大多时候用户或密码不对的时候,消息提示框都是显示在同一页面.
用CI却不知道怎么处理这种情况.
控制器login载入了登录页面.点击"登录"按钮,就提交到控制器loginIn.
loginIn载入表单验证类库,判断用户和密码框是否为空,是空的话也同样显示在登录页面,而不是载入一个新页面.但是如果在登录页面用<?php echo validation_errors(); ?>
很显然,在login控制器时没有载入过验证类库,就会提示没有定义过validation_errors()
如果是在自构函数那载入验证类库的话,那两个控制器都是定义过validation_errors()的.但是在login控制器载入视图带有$data参数.而loginin控制器则没,那又出错.
不知道这种情况如何处理.
发表于 2009-4-23 10:00:55 | 显示全部楼层
可以将出错信息,传送给data. 再把data传新的视图。
发表于 2009-4-23 10:06:29 | 显示全部楼层
你的登录 是post的吧

你可以
$data['errors'] = "校验的信息";
if(!empty($_POST['name'])&&empty($data['errors'])){
$this->load->view("登录成功页面",$data);
}else{
$this->load->view("登录页面",$data);
}

扔个砖头,赚点小玉
 楼主| 发表于 2009-4-23 14:14:26 | 显示全部楼层
登录成功页面和登录页面是同一个页面来的。
大部分视觉效果不是这样么,显示错误就显示在当前的页面,不再跳转到别的页面显示了。
发表于 2009-4-23 14:23:09 | 显示全部楼层
这个是不太可能的。用PHP写,只能提交后才能去执行这些信息。又不是ajax。
因为你的提交页是另一个页。如果在本页提交就不会有这样的问题。
发表于 2009-4-23 15:22:51 | 显示全部楼层
不刷新页面的都是 ajax。
 楼主| 发表于 2009-4-24 00:42:11 | 显示全部楼层
那看来,用JS来输出一些提示信息了.
很少有这种用户体验吧,输错了密码什么的,还弹到另一个页面显示错误信息,然后再让用户自己返回登录页面.
发表于 2009-4-24 08:47:41 | 显示全部楼层
CI.做登录和PHP没什么不用。你原来用什么方法现在就用什么方法就可以。
要不就用本页提交
发表于 2009-4-24 10:14:55 | 显示全部楼层
用户体验问题,那就不是框架所能决定的了,那需要你设计良好的用户界面和体验。
发表于 2009-4-24 15:52:23 | 显示全部楼层
我的做法是用不同的控制器调用相同的view
如果用户填写正确,就调用下一view,如果不正确,还调用同一个view, 只不过添加了一些说明错误的信息
因为我发现  <?php echo form_error('nom');?> 这样的信息如果没有值, 也不会报错

本版积分规则