[英]codeigniter pass data to nested view
我已经对该主题做了很多研究,但是我找不到如何做到这一点。 我试图将数据添加到从另一个视图的控制器调用的视图的$data
参数中。 然而,任何数据I添加到subview
经由subcontroller
不能被访问的subview
。 但是,当我尝试通过客户端视图将数据传递到子视图时,它就可以正常工作。 SO的大多数修补程序似乎只引用$key in $data['key']
而不是$ data,因此在这里似乎并不重要...
我有两节课:
这是我的客户端控制器(位于其上的页面welcome.php
),它将子视图$welcomemenu
的返回值存储在其自己的$ data数组中...:
<?php
class Welcome extends CI_Controller {
function __construct() {
parent::__construct();
}
function index() {
//echo 'this is the Welcome index function';
$data['clienttestdata'] = 'data from welcome.php!';
$data['welcomemenu'] = $this->load->view('welcome/welcomemenu', $data, true);
$this->load->helper('url');
$this->load->view('templates/header');
$this->load->view('pages/welcome', $data);
$this->load->view('templates/footer');
}
}
这是客户端视图(“ welcome_view.php”-看起来很简单。$ welcomemenu var是我将组件类的返回值放在其中的位置...):
<section id="allWelcomeContent" class="mainBody">
<header id="mainPageHdr" class=mainPageHdr>
<!-- other stuff from my header -->
</header>
<!-- this is where i want to put the welcome menu... -->
<section id="mainWelcomeContent" class="mainContent">
<div>
<?php echo $welcomemenu;?>
</div>
</section>
</section>
这是我的子组件welcomemenu.php
的控制器:
<?php
class Welcomemenu extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function index() {
$data['menu_items'] = array('About', 'Portfolio', 'Resume', 'Fun', 'Blog');
$data['testdata'] = 'data from welcomemenu.php!';
$this->load->view('welcome/welcomemenu', $data);
}
}
最后:这是应该从其自己的控制器获取数据的子视图,但是即使它可以从调用方客户端获取数据也不能(例如,$ clienttestdata显示正常,但$ testdata不能)!
<section>
<!-- TODO: make this element repeatable so content can load from controller and/or model. -->
<div id="divMenuItems">
<?php echo $clienttestdata;?>
<?php echo $testdata;?>
</div>
</section>
我仍然找不到任何合适的解决方案。 如果有人的话,请给我
当您将Welcomemenu部分包含在Welcome / index方法中时,您必须记住该视图不会通过其自己的控制器。 而是将其内容作为字符串返回并存储为参数。 它通过您通过$data
发送给它的参数来获取自己的所有参数:
$data['welcomemenu'] = $this->load->view('welcome/welcomemenu', $data, true);
到目前为止,该视图将可以访问$data
所有内容-通过Welcomemenu控制器无需添加任何其他功能。 因此,在上述情况下,它将具有:
array
(
'clienttestdata' => 'data from welcome.php!'
)
如果将所需的参数添加到$data
(作为$data['testdata']
),则子视图将具有所需的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.