2009-02-25 2 views
2

Я делаю простую систему шаблонов. Это раздражает, чтобы не быть в состоянии сохранить код в файле PHP и вывода его в HTML-файл ... Его не приятно иметь это в шаблоне:шаблон и в то время как петли

<?php 
while ($row = mysql_fetch_array($query)) { 
$name = $row['forum_name']; 
$date = $row['forum_date']; 
$desc = $row['forum_description']; 
$lastpost = $row['forum_lastpost']; 
?> 

<h1><?php echo $name ?></h1> 
<p><?php echo $desc ?></p> 

<?php } ?> 

Есть ли какой-то способ, которым я мог бы сохранить код в файле PHP?

Благодаря

ответ

2

Я предлагаю сделать запрос и обработку в файле PHP, а не в шаблоне , Постройте массив в файле php, затем пусть шаблон отобразит его.

Это, как я обычно это сделать:

PHP файл:

for ($i = 0; $row = mysql_fetch_array($query); $i++) 
{ 
    $forums[$i]['name'] = $row['forum_name']; 
    $forums[$i]['date'] = $row['forum_name']; 
    $forums[$i]['desc'] = $row['forum_description']; 
    $forums[$i]['lastpost'] = $row['forum_lastpost']; 
} 

файл шаблона:

<?php foreach ($forums as $forum) { ?> 
    <h1><?=$forum['name']?></h1> 
    <p><?=$forum['desc']?></p> 
<?php } // foreach ($forums as $forum) ?> 

Альтернативный синтаксис использует "ENDWHILE", как Glavic показал:

<?php foreach ($forums as $forum): ?> 
    <h1><?=$forum['name']?></h1> 
    <p><?=$forum['desc']?></p> 
<?php endforeach; ?> 
+0

Там нет необходимости для $ я, $ форумов [] [ 'SDF'] тоже будут работать. –

+0

Нет, это добавило бы 4 новых элемента в массив каждый раз через цикл, каждый с одним набором переменных. –

+0

Структура с отступом внутри-PHP-block-as-tag хороша, но не забудьте htmlspecialchars() имя и описание форума, чтобы избежать вставки HTML. – bobince

0

Вы можете использовать шаблонизатор как http://dwoo.org/

Или использовать альтернативный синтаксис, как:

<?php while ($row = mysql_fetch_array($query)): ?> 
    <h1><?=$row['forum_name']?></h1> 
    <p><?=$row['forum_description']?></p> 
<?php endwhile; ?> 
1

Мне нравится t o использовать PHP в качестве механизма шаблонов и использовать шаблон MVC. Для того, чтобы логика View и Business была разделена, в представлении, который является HTML-кодом, разрешен только несколько типов кода PHP. Допустимый код:

* Single functions 
* Alternate format If/Else/ElseIf blocks 
* Alternate format For loops 
* Alternate format Foreach loops 
* Alternate format Switch statements 

PHP предлагает альтернативный синтаксис для некоторых из его структур управления; а именно, если, while, for, foreach и switch. В каждом случае основной формой альтернативного синтаксиса является изменение открывающей скобки на двоеточие (:) и закрывающая скобка до endif ;, endwhile ;, endfor ;, endforeach ;, или endswitch; соответственно. Эти альтернативные форматы являются единственными форматами, которые должны использоваться в представлении.

Я уступлю, что альтернативный синтаксис PHP медленнее (потому что интерпретатор прыгает в и из PHP-тегов). Но, как правило, это эквивалентно миллисекундам времени обработки и мало что отличается от сегодняшних серверов в большинстве сред.

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

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

http://www.joeldare.com/wiki/applate