在视图内的函数中访问Codeigniter数据变量

时间:2011-08-08 14:48:00

标签: php function codeigniter view scope

我的一个视图中有一个函数,我想通过CodeIgniter的数据数组访问视图可用的一个变量。

例如;在我的控制器中我有这个:

$this->load->view('someview', array(
    'info' => 'some info'
));

现在,在我看来,我有一个函数,我希望能够从该函数范围内访问变量$info

这可能吗?

3 个答案:

答案 0 :(得分:4)

在您的控制器中:

    $GLOBALS['var_available_in_function'] = $value;

你的职能:

    function get_var() {
       global $var_available_in_function;

       return $var_available_in_function;
    }

答案 1 :(得分:3)

我试过了,但在我的视图globals中使用someview.php无效..

function func_in_view(){
  global $info;
  print_r ($info); // NULL
}

您可能需要将此参数作为参数传递给您的函数,以便它可用。

function func_in_view($info){
  print_r ($info); // NULL
}

我读过这个方法$this->load->vars($array)
http://codeigniter.com/user_guide/libraries/loader.html中 但它的目的只是让它可用于该控制器的任何功能的任何视图文件。我在global $info;上方尝试了我的代码,但仍然无效。

您可能需要将其作为参数传递来执行变通办法。
请尝试在someview.php =&gt;中加入此内容<{1}}和print "<pre>";print_r($GLOBALS);print "</pre>";传递的变量不包含在内。

答案 2 :(得分:0)

我通过在视图中创建一个全局变量,然后将传入的$ data值分配给全局变量来解决这个问题。这样,可以在视图函数中读取信息,而无需将变量传递给函数。

例如,在控制器中,您有:

$data['variable1'] = "hello world";
$this->load->view('showpage',$data);

然后在showpage.php视图中,您有:

global $local_variable = $variable1;

function view_function() {
  global $local_variable;
  echo $local_variable;
}

view_function();

希望这有帮助!