2013-04-07 2 views
1

я в настоящее время после этой основной CodeIgniter учебник и автор использовал подобный код в этом представлении/post_index.php страницеCodeigniter PHP короткие теги не работают

if (!isset($posts)){ ?> 
    <p> No Post to display </p> 
<?php 
} else { 
    foreach ($posts as $row){ 
?> 
    <h2> <?=$row['title']?> </h2> 
     <p> <?=$row['post'] ?></p> 

<?php 
    } 
} 
?> 

и я получаю пустую страницу с этим

<h2> <?=$row['title']?> </h2> 
<p> <?=$row['post'] ?></p> 

в моем источнике.

Однако, когда я использую этот

<h2> <?php echo $row['title']?> </h2> 
    <p> <?php echo $row['post'] ?></p> 

Я в порядке. Он показывает все мои сообщения. Я сбегаю с wamp (просто скачал 64bits & Apache 2.4, версия 2.2E с сайта, за исключением того, что я не вижу большой разницы со всеми остальными 4 пакетами, которые у них есть ....) с Apache Version: 2.2. 21
PHP Версия: 5.3.10

Что происходит?

спасибо.

+0

Добавить пробел между '=' и '$'? '' – Aiias

+0

codeigniter имеет конфигурационный параметр ** $ config ['rewrite_short_tags'] = FALSE; ** он должен быть TRUE в этом случае – sbaaaang

ответ

3

Это обычно означает, что у вас нет включенных коротких тегов (большинство PHP < установок 5.4.0 по умолчанию их используют). Вам нужно будет проверить файл php.ini.

Прежде чем включать их, я бы предложил прочитать https://softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php. Есть плюсы и минусы использования синтаксиса коротких тегов.

@IMSoP также делает очень действительное примечание:

В частности, вам необходимо установить опцию short_open_tag (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag) включен , если с помощью PHP < 5.4. От 5,4 года, эта установка по-прежнему присутствует, , но не требуется для <?= ... ?> случае, только потенциально проблемного <? ... ?>

+1

В частности, вам нужно ['short_open_tag' option] (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag) включен, если используется PHP <5.4. Начиная с 5.4, эта настройка по-прежнему присутствует, но не нужна для случая '', только потенциально проблематичный '' – IMSoP

+0

@IMSoP. Кажется, что это достойный отдельный ответ - сделайте это, и я его продолжу. В противном случае, я могу изменить свой вопрос, чтобы процитировать вас. –

+0

Наверно, я сам отредактировал его в свой ответ, для общего блага. Как кто-то еще прокомментировал здесь, «они просто интернет-точки» :) – IMSoP

-2

, если вы хотите использовать short_tags, вы НУЖНА short_tags, вы должны включить их в application/config/config.php

$config['rewrite_short_tags'] = TRUE;` 

проверка док пожалуйста Codeigniter Documentation

документация ясно говорит:

Примечание. Если вы обнаружите, что синтаксис, описанный на этой странице, не работает на вашем сервере, возможно, в вашем PHP-файле отключены «короткие теги». CodeIgniter будет необязательно переписывать короткие теги «на лету», , позволяющие использовать этот синтаксис, даже если ваш сервер не поддерживает . Эта функция может быть включена в вашем файле config/config.php.

Обратите внимание, что если вы используете эту функцию, если в файлах вашего вида обнаружены ошибки , сообщение об ошибке и номер строки будут не будут точно отображаться. Вместо этого все ошибки будут отображаться как ошибки eval() .

+0

lol -1 для сарказма: D – sbaaaang

+0

@IMSoP да, но pffff, короткие теги pffff – sbaaaang

+0

Если вы используете PHP как язык шаблонов вообще (чего я лично не хотел бы, но я знаю, что много фреймворков и CMS), то '< ? = 'как short-hand для' IMSoP

Смежные вопросы