私はこのトピックについて非常に多くの研究をしましたが、どうすればこれを行うことができるかわかりません。$data
別のビューのコントローラーから呼び出されているビューのパラメーターにデータを追加しようとしています。subview
ただし、経由で追加したデータには、subcontroller
がアクセスできませんsubview
。ただし、クライアントビューを介してサブビューにデータを渡そうとすると、問題なく機能します。SOの修正のほとんどは、$ dataではなく呼び出しを参照しているように$key in $data['key']
見えるため、ここではあまり関係がないようです...
私には2つのクラスがあります:
- 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変数は、コンポーネントクラスからのリターンを置く場所です...):
<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>
それでも私は適切な解決策を見つけることができませんでした。誰かが私にください