Smarty, jak ładnie pisać

2006-12-24 09:10

W moim pojęciu system szablonów (nasze przykłady skupią się na Smarty) sprawdza się do końca tylko wtedy gdy ich budowa jest banalnie prosta (np. nie ma zbyt wielu zagęszczonych warunków if). Dzięki temu zyskujemy dwie rzeczy - przejrzystość, jeśli coś zmieniamy to martwimy się o kod php głównie i tam dokonujemy większość poprawek. W innym przypadku trzeba byłoby się jeszcze zagłębiać w logikę systemu szablonów, co oznacza 2x więcej roboty. Kolejny plus to praca zespołowa, osoba, która tworzy html nie musi być programistą, więc po co ją straszyć jakimiś dziwnymi konstrukcjami.

Kolejna kwestia to dobranie odpowiedniej konstrukcji. Praktycznie każda działa, ale nie każda jest IDEALNA.

Chciałbym wyświetlić formularz o budowie:
nazwa sekcji
nazwa : pole do uzupełnienia
nazwa : pole do uzupełnienia
nazwa sekcji
nazwa : pole do uzupełnienia

Smarty rozwiązanie 1

<table>
{assign var='section' value=''}
{foreach from=$dataForms item=row}
{if $row.section ne $section}
	{assign var='section' value=$row.section}
	<tr>
		<td colspan="2">{$row.section}</td>
	</tr>
{/if}
	<tr>
		<td>{$row.name}</td>
		<td><input type="text" name="data[]" /></td>
	</tr>
{/foreach}
</table>

Smarty rozwiązanie 2

<table>
{foreach from=$dataForms item=row}
{if $row.section}
	<tr>
		<td colspan="2">{$row.section}</td>
	</tr>
{else}
	<tr>
		<td>{$row.name}</td>
		<td><input type="text" name="data[]" /></td>
	</tr>
{/if}
{/foreach}
</table>

Smarty rozwiązanie 3

<table>
{foreach from=$sections item=row key=key}
	<tr>
		<td colspan="2">{$key}</td>
	</tr>
	{foreach from=$row item=row2}
	<tr>
		<td>{$row2.name}</td>
		<td><input type="text" name="data[]" /></td>
	</tr>
	{/foreach}
{/foreach}
</table>

Każde z powyższych rozwiązań oczywiście wymaga przygotowania innej tablicy z danymi. Pierwsze jest ble bo muszę w systemie szablonów definiować nową zmienną - PORAŻKA. Drugie rozwiązanie bazuje na zasadzie dodatkowych pojedynczych wpisów w tablicy, które zawierają tylko nazwę sekcji - PORAŻKA. Ostatnie rozwiązanie wydaje mi się najtrafniejsze. W PHP budujemy tablicę o kluczu złożonym z nazwy sekcji, a zawartość to tablica z danymi tej sekcji.

Słowa kluczowe: PHP, Szablony, czytelność, html, pętla, system szablonów, artykuł, blog

Projektowanie i tworzenie stron www w PHP5. Opisy i recenzje oprogramowania typu cms, blog, wiki, open source.
Wszelkie prawa zastrzeżone.