【问题标题】:Display Multiple Views for Single Page Code Igniter MVC显示单页代码点火器 MVC 的多个视图
【发布时间】:2012-03-27 19:40:56
【问题描述】:

我有一个名为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 我看到它包含在视图的源代码中。

【问题讨论】:

    标签: php model-view-controller codeigniter variables


    【解决方案1】:

    我认为您可能想阅读一下如何正确加载视图。

    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);
    }
    

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

    【讨论】:

      【解决方案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 时它们不可用。

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多