我在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; ?>
答案 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));
}