Представление CodeIgniter не анализирует PHP - PullRequest
0 голосов
/ 10 августа 2011

Я сталкиваюсь с проблемой, когда следующий код не анализирует baseTop.php, а получает его в виде литеральной строки вместо анализа PHP.PHP у меня на этой странице, например <?=$content?>, работает нормально.Есть мысли о том, почему это происходит?

<?
    $this->load->view('layouts/baseTop.php');
?>
    <div class="shell">
        <div id="header">
            <h1 id="logo" class="fl notext"><a href="/">Home</a></h1>
            <div class="top-bar">
                <div class="cl">&nbsp;</div>
            </div>
        </div>
        <div id="content">
            <div id="sidebar">
            </div>
            <div id="widecolumnWrapper"><div id="widecolumn">
                <!-- tabs -->
                <div id="mainbox">
                    <div class="main-top"><div>&nbsp;</div></div>
                    <div class="main-wrap"><div class="main-cnt">
                    <?=$content?>
                        <span id="mainbox-clear">&nbsp;</span>
                    </div></div>
                    <div class="main-bottom"><div>&nbsp;</div></div>
                    <p>&nbsp;</p>
                </div>
            </div></div>
        </div>
    </div>
<?
    $this->load->view('layouts/baseBottom.php');
?>

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Не используйте короткие открытые теги.Используйте полный <?php ?>.Если у вас включены короткие открытые теги, отметьте phpinfo(), чтобы проверить этот параметр.Я подозреваю, что ваши настройки установлены неправильно.

Следует избегать использования коротких открытых тегов, поскольку они неоднозначны и могут быть удалены в будущих версиях PHP.Тем не менее, они официально еще не признаны устаревшими.

0 голосов
/ 10 августа 2011

Ну, вы не должны загружать никакие представления в другое представление.Причина ошибки в том, что $this указывает на View объект класса, а загрузка представлений определяется в CI_Controller классе.Чтобы достичь того, что вы хотите, вы можете сделать следующее

В контроллере:

$data = $this->load->view('layouts/baseTop.php',array(), TRUE);
$this->load->view('*your view*', array('baseTop'=>$data));

На ваш взгляд: заменить <? $this->load->view('layouts/baseTop.php');?> просто <?php echo $baseTop;?>

у вас будет другое представление, помещенное в ваше представление так же, как если бы оно было включено туда.Примечание TRUE при загрузке baseTop.php - это указывает CodeIgniter перехватывать вывод представления в переменную, а не сбрасывать его на страницу.

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