Висит / перемежается / проникает через HTML-цикл - PullRequest
0 голосов
/ 12 марта 2010

Я не могу понять, как сказать, о чем я говорю, и это большая часть того, почему я застрял. В PHP я часто вижу такой код

html
<?php
   language construct that uses brackets {
       some code;
?>
more html
<?php
       some more code;
    }
?>
rest of html

Есть ли имя для этого? Увидев это, я попробую, так что вот конкретный пример, поведение которого не имеет смысла для меня

<div id="content">
<ul id="nav">
<?php
    $path = 'content';
    $dir = dir($path);
    while(false !== ($file = $dir->read())) {
        if(preg_match('/.+\.txt/i', $file)) {
            echo "<li class=\"$file\">$file</li>";
?>
</ul>
<?php
            echo "<p class=\"$file\">" . file_get_contents($path . '/' . $file) . '</p>';
        }
    }
?>
</div>

Который выдает примерно <div><ul><li></li></ul><li></li><p></p>...</div> вместо <div><ul><li></li>...</ul><p></p>...</div>, что, как я думал, могло бы произойти и что я хочу, чтобы произошло. Чтобы было понятнее, я хочу, чтобы <li> внутри <ul> и <p> внутри <div>. Да, я знаю, что есть простое решение, но мне было интересно, есть ли способ сделать это с помощью техники, для которой я ищу имя.

1 Ответ

3 голосов
/ 12 марта 2010

Просто кое-что добавить сюда:

Если вы используете цикл PHP для шаблонов, существует другой синтаксис, который поможет вам избежать путаницы с отступом и which-braces-match-which:

<?php
    foreach($items as $item):
?>
<b>item: </b> <?php echo $item; ?> <br />
<?php
    endforeach;
?>

это может быть упрощением, но на самом деле вы не должны использовать в шаблоне ничего более сложного, чем это. Такие вещи, как переменная $items и все, что вам нужно, должны настраиваться кодом, который включает шаблон, а не самим шаблоном.

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