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

[已解决] 关于在$this->load->view后面用exit中断流程出错的问题

[复制链接]
发表于 2011-2-28 15:49:21 | 显示全部楼层 |阅读模式
如题,在使用$this->load->view调用模板后如果希望用exit或者die中断流程,这将导致视图被中断加载,页面一片空白,而问题在于CI的载入视图是不中断流程的,如果在载入视图后还有流程的话会继续运行下去,这不知道是CI的BUG还是故意这样设置的
发表于 2011-2-28 15:56:48 | 显示全部楼层
这个其实你去看下代码就是知道了,或者可以搜索 看 http://cn.php.net/ob_start
发表于 2011-2-28 16:10:58 | 显示全部楼层
不能在 load view 后 exit,只能使用 return,这是 CI 架构导致的。
 楼主| 发表于 2011-2-28 16:32:05 | 显示全部楼层
谢谢楼上2位
发表于 2011-2-28 16:51:30 | 显示全部楼层
是的用EXIT刷新就白了;
再刷新就好了
 楼主| 发表于 2011-3-16 10:22:17 | 显示全部楼层
用return有个问题啊,在构造函数中你即使return了他还是会去执行后面的代码,这样的话无法进行登陆检查之类的工作
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class Welcome extends CI_Controller {
 
        function __construct()
        {
                parent::__construct();
                $this->load->helper('url');                     //为了使用绝对路径
                return 0;
        }
 
        function index()
        {
                $this->load->view('welcome_message');
        }
       
        function test(){
                echo '<br>test<br>';
        }
}
复制代码

大家可以尝试下这段代码,用http://domain/index.php/welcome/test访问,是会显示<br>test<br>的
 楼主| 发表于 2011-3-16 10:23:50 | 显示全部楼层
是的用EXIT刷新就白了;
再刷新就好了
skeay 发表于 2011-2-28 16:51


这位仁兄的话不是太明白~
发表于 2011-3-16 10:27:50 | 显示全部楼层
回复 7# lixigame


   你了解一下PHP的ob系列函数
发表于 2012-8-31 11:50:13 | 显示全部楼层
{:soso_e113:}   太感谢了   哈哈   用   ob_start();    $this-load->view("");  ob_end_flush();  exit();  这样上边的load->view  就能执行了  判断登录啥的 都用它

本版积分规则