Отображение нескольких представлений для одностраничного кода Igniter MVC - PullRequest
2 голосов
/ 10 марта 2012

У меня есть контроллер с именем 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 ]

3 голосов
/ 10 марта 2012

Я думаю, что вы, возможно, захотите немного почитать, как правильно загружать представления.

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 голосов
/ 10 марта 2012

Вы хотите передать свои вложенные представления в виде строк в представление 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 их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...