Javascript 关于Codeigniter上的全局变量
我知道OOP编程中的全局变量(您可以在整个模型-视图-控制器thing-y中访问)听起来非常懒惰,但是我对Codeigniter比较陌生,目前仅将其用作原型。 我计划做一个结构良好的OOP,但现在我没有足够的时间来做。 所以,看到这个愚蠢的问题被问了上千次,我为每个“屁股受伤”的人感到非常抱歉 无论如何,如果正在填充此$err\u msg变量,则始终显示$err\u msg警报,例如Javascript 关于Codeigniter上的全局变量,javascript,php,codeigniter,oop,Javascript,Php,Codeigniter,Oop,我知道OOP编程中的全局变量(您可以在整个模型-视图-控制器thing-y中访问)听起来非常懒惰,但是我对Codeigniter比较陌生,目前仅将其用作原型。 我计划做一个结构良好的OOP,但现在我没有足够的时间来做。 所以,看到这个愚蠢的问题被问了上千次,我为每个“屁股受伤”的人感到非常抱歉 无论如何,如果正在填充此$err\u msg变量,则始终显示$err\u msg警报,例如$err\u msg=“您没有访问此页面的权限!”。然后我的控制器上有一个模板视图,如下所示: function
$err\u msg=“您没有访问此页面的权限!”
。然后我的控制器上有一个模板视图,如下所示:
function view_template($current_view, $data){
$this->load->view('header');
$this->load->view($current_view, $data);
}
function home(){
$this->view_template('Home','');
}
现在我将在header.php上显示警报:
//keep in mind that I do change this variable according to how I use the global variable
//so if I were to use $GLOBALS['err_msg'], these $err_msg will change to $GLOBALS['err_msg']
if($err_msg != ""){
echo '<script language="javascript">';
echo 'alert("'.$err_msg.'")';
echo '</script>';
$err_msg = "";
}
或
但是,这只有在我直接调用控制器上的函数以查看页面时才有效,例如:
$GLOBALS['err_msg'] = "";
$GLOBALS['err_msg'] = "You don't have the permission to access this page!";
$this->home();
但不是
$GLOBALS['err_msg'] = "You don't have the permission to access this page!";
redirect('SomeController/home', 'refresh');
如果是提交表单页面,不使用重定向将是危险的,因为如果该页面被刷新,它将再次提交。更不用说页面URL会很难看
我也在控制器上尝试了一些使用全局变量或普通变量的方法,并将其传递到标头,但如果我使用重定向,也不会起作用,因为重定向会直接重新调用控制器(很抱歉,我无法真正解释这一点,但我确实理解这不起作用的原因)
基本上,我的控制器将检查尝试访问此页面的用户是否满足访问此页面的所有条件。如果他没有通过,他将被重定向到另一个带有警报的页面。这有时也适用于提交表单页面,因此如果用户确实提交了表单,但仍不满足条件,则仍将重定向
你们认为什么是最好的方法?请随意批评我的代码,并为我糟糕的英语感到抱歉。创建自己的核心控制器,然后在自己的控制器中扩展类控制器,然后在其中生成全局变量。如果您熟悉jQuery“ajax”,那么应该使用is-tho。出于更安全的目的,它使您的网站响应更快 例如:
class Mycontroller extends CI_Controller
{
}
到
您应该将核心控制器放置在应用程序->核心中
class Mycontroller extends CI_Controller
{
}
class Mycontroller extends mycorecontroller {
}