[英]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.