显示单页代码点火器MVC的多个视图

时间:2012-03-10 19:40:45

标签: php model-view-controller codeigniter variables

我有一个名为landingpage.php的控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class LandingPage extends CI_Controller {

    public function index()
    {
/*header*/  $head = $this->load->view('header_meta', '', true);
            $this->load->view('index', array('head' => $head));

/*guts*/    $guts = $this->load->view('Landing_Guts', '', true);
            $this->load->view('index', array('guts' => $guts));

/*footer*/  $foot = $this->load->view('footerLanding', '', true);
            $this->load->view('index', array('foot' => $foot));
    }
}

footerLanding:

<div id="redStripe_a"> </div>
</div><!--/container_a-->
<div id="footer_a">
            <ul id="footer">
                <li><a href="#">About</a></li>
                <li><a href="#">Blog</a></li>
                <li><a href="#">Contact</a></li>
                <li><a href="#">Press</a></li>
                <li><a href="#">Terms</a></li>
                <li><a href="#">Privacy</a></li>
                <li><a href="#">Feedback</a></li>
                <li><a href="#">Jobs</a></li>
                <span class="red" style="float:right;font-size:0.8em;">&copy; 2012 Co,Inc.</div></span>
                </ul><!--/footer :: ul-->


<div id="clearB"> </div>
    </div><!--/footer_a-->

index.php (查看)

<?php echo $head; ?>

<body>
<?php echo $guts; ?>
</body>

<?php echo $foot; ?>

我在加载时会在页面上出现以下错误...但代码已放入视图中,因为如果我View Source我看到它包含在视图的源代码中。

img1 img2

2 个答案:

答案 0 :(得分:3)

我想您可能想要了解如何正确加载视图。

public function index(){
    // Load each view ONCE
    $data = array(
        'head' => $this->load->view('header_meta', '', true),
        'guts' => $this->load->view('Landing_Guts', '', true),
        'foot' => $this->load->view('footerLanding', '', true)
    );

    // Load index view ONCE, passing variables in data array
    $this->load->view('index', $data);
}

代码未经测试,但这是一般的想法。另外,我建议您坚持使用视图文件的单一命名约定。

答案 1 :(得分:2)

您希望将子视图作为字符串一次性传递给index视图:

public function index()
{
  $data = array(
    'head' => $this->load->view('header_meta', '', true),
    'guts' => $this->load->view('Landing_Guts', '', true),
    'foot' => $this->load->view('footerLanding', '', true)
  );

  $this->load->view('index', $data);
}

现在,你正在有效地传递你的标题,渲染视图,传递内容,渲染视图,传递脚,渲染视图,以及......好吧......你明白了。您第一次尝试加载index时看到的错误是因为$guts$foot未加载,因此$index时无效试图echo他们。