【问题标题】:Access Codeigniter data variables in function inside a view在视图内的函数中访问 Codeigniter 数据变量
【发布时间】:2011-10-22 11:18:54
【问题描述】:

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

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

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

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

这可能吗?

【问题讨论】:

  • 看不出为什么不,应该就像使用助手一样。
  • @simnom:不像 Javascript,它有一个作用域查找链(如果一个变量在本地作用域中没有找到,它会在作用域链的上层查找它),PHP 只能使用 local 或全局变量。因此,暴露给视图的变量在函数内部是不可用的。
  • 那为什么不把变量传给函数呢。您可以访问 $info,只需将其传递给 function_name($info)。

标签: php function codeigniter view scope


【解决方案1】:

我通过在视图中创建一个全局变量来解决这个问题,然后将传入的 $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();

希望这会有所帮助!

【讨论】:

  • 问题是,如果您有许多从数组生成的变量,例如用户的详细信息,并且您希望每个单个值都在它自己的变量中以供视图访问
  • "全局 $local_variable = $variable1;"在这里抛出一个语法错误。
【解决方案2】:

在您的控制器中:

    $GLOBALS['var_available_in_function'] = $value;

你的功能:

    function get_var() {
       global $var_available_in_function;

       return $var_available_in_function;
    }

【讨论】:

    【解决方案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 => print "<pre>";print_r($GLOBALS);print "</pre>"; 中,并且不包含通过 $this->load->view 传递的变量。

    【讨论】:

    • 你是对的。我误读了帖子并删除了我的答案。我想你的答案是正确的。
    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多