簡體   English   中英

Codeigniter將數據傳遞到嵌套視圖

[英]codeigniter pass data to nested view

我已經對該主題做了很多研究,但是我找不到如何做到這一點。 我試圖將數據添加到從另一個視圖的控制器調用的視圖的$data參數中。 然而,任何數據I添加到subview經由subcontroller不能被訪問的subview 但是,當我嘗試通過客戶端視圖將數據傳遞到子視圖時,它就可以正常工作。 SO的大多數修補程序似乎只引用$key in $data['key']而不是$ data,因此在這里似乎並不重要...

我有兩節課:

  • welcome.php-頁面
  • welcomemenu.php-打算加載到welcome.php中的一組控件

這是我的客戶端控制器(位於其上的頁面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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM