在CodeIgniter子视图中更改变量值

时间:2017-02-01 11:57:18

标签: php codeigniter

我在CI应用程序中有一个主视图,我在其中声明了一个变量。 该主视图在循环中加载了几个子视图。

我希望这些子视图能够修改我的变量,以便在循环结束时更新它的值。

示例:

main_view.php

<?php
$my_var = false;
foreach($a_views as $s_view){
   $this->load->view($s_view, array('my_var' => $my_var);
}
var_dump($my_var); // Still false
?>

sub_view.php

<?php $my_var = true; ?>

1 个答案:

答案 0 :(得分:1)

查看$this->load->view功能的代码。 传递给视图的数据是“单向”,这意味着它可用,只能在视图中修改。

这意味着你必须找到另一种方法来实现你想要实现的目标。

请记住,根据我从您的问题中所理解的内容,您正在尝试使用“视图”进行一些“逻辑操作”,这会打破MVC架构。

/**
 * View Loader
 *
 * Loads "view" files.
 *
 * @param   string  $view   View name
 * @param   array   $vars   An associative array of data
 *              to be extracted for use in the view
 * @param   bool    $return Whether to return the view output
 *              or leave it to the Output class
 * @return  object|string
 */
public function view($view, $vars = array(), $return = FALSE)
{
    return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}