好的,我有页面控制器和user_authenticator控制器。
页面控制器就像我的视图的终端,而user_authenticator控制器执行与注册/登录等用户相关的功能。
每当我完成user_authenticator中的某个功能时,例如登录,如何通过页面控制器加载视图?
登录 - > USER_AUTH(控制器) - > acc_model(模型) - > USER_AUTH(控制器) - >图
到
登录 - > user_auth-> acc_model->页(控制器) - >图
如果你们能告诉我,我所做的事情是不切实际的,也是更好的做事方式,对我来说将是一件福音。或者我应该坚持在我以前使用的控制器上加载视图。
编辑:所以我可能已经忘记了我的页面控制器的目的,但我记得因为我的模糊和疲惫的心灵清晰的一刻。
我创建了一个页面控制器,仅用于加载视图,我想在某种意义上,页面不会加载所有视图但至少包含大多数视图,例如,如果我的视图中有链接到其他视图,我会通过页面链接它们。
对于需要特定控制器的特定功能,我想我可以让他们处理加载一些视图。
然后,如果有人能告诉我我在做什么是浪费时间,应该删除页面控制器,请告诉我,我想知道原因。
如果您对我的页面控制器的进一步使用有任何建议,那就太棒了!
关于会话。我有一个基本控制器。
<?php
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function is_logged_in($data){
$session = $this->session->userdata();
if($session['isloggedin']['username'] == ''){
return isset($session);
}else{
return FALSE;}
}
}
?>
如果有任何会话设置,如何使其自动运行并检查我加载的每个控制器?
我必须将它放入构造函数中吗?或者我是否必须从所有控制器调用基本控制器方法?
答案 0 :(得分:0)
这是您的最佳解决方案
你可以使用挂钩
第一步:
应用/配置/ config.php中
$config['enable_hooks'] = TRUE;//enable hook
步骤2:
应用/配置/ hooks.php
$is_logged_in= array();
$is_logged_in['class'] = '';
$is_logged_in['function'] = 'is_logged_in';//which function will be executed
$is_logged_in['filename'] = 'is_logged_in.php';//hook file name
$is_logged_in['filepath'] = 'hooks';//path.. default
$is_logged_in['params'] = array();
$hook['post_controller_constructor'][] = $is_logged_in;//here we decare a hook .
//the hook will be executed after CI_Controller construct.
//(also u can execute it at other time , see the CI document)
第三步: application / hooks / is_logged_in.php //你贬低了什么
<?php
//this function will be called after CI controller construct!
function is_logged_in(){
$ci =& get_instance();//here we get the CI super object
$session = $ci->session->userdata();//get session
if($session['isloggedin']){ //if is logged in = true
$ci->username = 'mike';//do what you want just like in controller.
//but use $ci instead of $this**
}else{
//if not loggedin .do anything you want
redirect('login');//go to login page.
}
}
步骤4:应用/控制器/ pages.php
<?php
class pages extends CI_Controller{
function construct ........
function index(){
echo $this->username;//it will output 'Mike', what u declared in hook
}
}
希望它会对你有所帮助。