Можно ли избежать дублирования кода при выводе форм?
Например, для вывода меню я бы сделал так:
<div class="nav" role="navigation">
<ul>
<?foreach(array(
'index' => 'Главная',
'services' => 'Услуги',
'portfolio' => 'Портфолио',
'contacts' => 'Контакты'
) as $href=>$txt):?>
<li><a href="<?=$href?>">
<?=$txt?>
</a></li>
<?endforeach?>
</ul>
</div>
Согласитесь, это лучше, чем каждый раз писать
<li><a target ... class ...></a></li>
_________________
Теперь понадобилось мне вывести форму с большим количеством полей.
С обработкой проблем нет, циклы и функции для массивов могут помочь.
А с выводом?
Разметка будет примерно такая:
<form method="POST" action="">
<div class="field">
<label>
<input type="text" name="aaa" <?=check_validation('aaa');?> value="<?=myfilter($_POST['aaa']);?>">
</label>
</div>
<!-- несколько полей такого типа -->
<div class="field">
<label>
<textarea name="ggg" <?=check_validation('ggg');?>><?=myfilter($_POST['ggg']);?></textarea>
</label>
</div>
<!-- два - три таких -->
<div class="field">
<label>
<select name="kkk" <?=check_validation('kkk');?>>
<option <?=isSelected('kkk', '1');?> value="1">qwe</option>
<option <?=isSelected('kkk', '2');?> value="2">asd</option>
</select>
</label>
<!-- такие,
ну и несколько checkbox и radio, где is checked проверяется. -->
</div>
</form>
Как обычно делают, так вручную все поля прописывают? Или все же нет?
Задумался над созданием своего класса FormBuilder, типа передаем массивы с тегами, атрибутами, значениями, а в шаблоне циклом выводить.
Как лучше реализовать? Что посоветуете?