设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 问答求助
›
如何终止CI框架的运行
返回列表
查看:
4257
|
回复:
6
[已解决]
如何终止CI框架的运行
[复制链接]
benzene
benzene
当前离线
积分
8
IP卡
狗仔卡
发表于 2010-3-15 22:36:46
|
显示全部楼层
|
阅读模式
我现在遇到一个问题,大致是这样的,比如我写了一个函数专为用来检测登录,并且放在了我扩展的类里面
如下
PHP
复制代码
function
islogin
(
)
{
$this
->
load
->
view
(
"basic_tips"
)
;
}
复制代码
但是我的其他函数会吊用这个,比如在welcome里面
PHP
复制代码
class
Welcome
extends
SDO_Controller
{
function
Welcome
(
)
{
parent
::
SDO_Controller
(
)
;
$this
->
data
[
"currentPage"
]
=
"home"
;
}
function
index
(
)
{
$this
->
islogin
(
)
;
$this
->
load
->
view
(
'welcome_index'
,
$this
->
data
)
;
}
}
复制代码
但是会显示2个界面,我想执行islogin后就输出islogin里面的模板,其他后面的不输出,我适用die()后没有任何内容了,所以不知道各位知道如何终止吗,排除适用if()
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
saturn
saturn
当前离线
积分
1844
IP卡
狗仔卡
发表于 2010-3-15 22:53:33
|
显示全部楼层
PHP
复制代码
$this
->
load
->
view
(
"basic_tips"
)
;
exit
(
)
;
复制代码
这个理论上不属于CI的范畴,是PHP的知识。load view只是解析变量,然后包含一个文件而已。
system/libraries/Loader.php加载视图的片断如下:
PHP
复制代码
if ((bool) @ini_get('short_open_tag') === FALSE AND config_item('rewrite_short_tags') == TRUE)
{
echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('
<?=
', '
<?php
echo
', file_get_contents($_ci_path))));
}
else
{
include($_ci_path); //楼主看这里
}
复制代码
回复
支持
反对
使用道具
举报
显身卡
benzene
benzene
当前离线
积分
8
IP卡
狗仔卡
楼主
|
发表于 2010-3-16 11:15:25
|
显示全部楼层
非常荣幸能得到管理员的恢复,主要是当我适用exit();的时候页面就空白了
回复
支持
反对
使用道具
举报
显身卡
saturn
saturn
当前离线
积分
1844
IP卡
狗仔卡
发表于 2010-3-16 19:33:01
|
显示全部楼层
回复
3#
benzene
不客气。
另外,我在二楼的回答是错误的!应该用return,而不是exit。因为exit是退出并停止当前脚本的工作,而return只是中止当前函数的执行。
实际情况是,不应该在加载一个view之后直接退出,因为此时CI还没有完成它的最终工作——输出视图。视图的输出由output库负责,而这一动作是在视图加载之后完成的。这也就不难解释为什么出现空白页,因为数据在buffer里面还没有被送到浏览器呢。
当局者迷,旁观者清。多站在高一点的角度看待问题。
回复
支持
反对
使用道具
举报
显身卡
sxpcrazy
sxpcrazy
当前离线
积分
7
IP卡
狗仔卡
发表于 2011-3-18 17:01:25
|
显示全部楼层
刚好和我遇到的问题一样,手册中也并没有说明,我是自己做了一个叫 Auth 的 library ,加入了 autoload 里面,我在这个 Auth 的类里面检查用户身份,然后使用不同的 view 去显示,但是因为是 library ,不会阻止 controller 的调用,所以 controller 还是会去执行并且输出他自己的 view ,有没有办法可以在 library 里面就结束后面的 controller 的调用?
回复
支持
反对
使用道具
举报
显身卡
sxpcrazy
sxpcrazy
当前离线
积分
7
IP卡
狗仔卡
发表于 2011-3-18 17:10:33
|
显示全部楼层
也就是说我想在 autoload 的 library 里面就终止后面的 controller 的运行,直接输出内容,不要走后面的流程了,如何做到?设置变量在 controller 里面检查当然是可以做到的,但我的 Auth 需要每个页面之前都会运行,必须先验证用户身份再决定用户是否有权访问或者让用户离开。
如果我的做法不是通常做法,请指教一个这种模式的通常做法,据我了解 hook 也无法控制后续流程不要进行,目前我看到的手册中都没有流程控制相关的概念,最好能深入说明下,谢谢
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50165
IP卡
狗仔卡
发表于 2011-3-18 19:27:01
|
显示全部楼层
回复
6#
sxpcrazy
不修改 CI 源码,你的需求无法实现, CI 没有这个流程,你看看 CI 的流程图就知道了。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页