если сюда и верстальщика подключать, то не о какой универсальности и лёгком добавлении полей нельзя и думать. У меня формы строятся автоматически, но на текущем проекте это невозможно, т.к. форму сразу должен отрисовать дизайнер, затем верстальщик разместить элементы т.к. в дизайне, а затем программист закодить в php? не нужно стремиться к 100% автоматизации иногда уместна не уместна, реши вопрос хотя бы для 90% случаев.В этом случае нельзя будет простым способом (верстальщику) добавить/изменить атрибуты HTML элемента.
fixxxer я формам больше функционала даю, они сами способны проверить была ли форма засабмичена и передать данные в модель, но в целом так же.
PHP:
public function edit() {
$form = new Amdy_Form($this->getYML()); // чтобы не пложить лишних классов храню описание в конфиге,
//не мешало бы генерить их на основании метаданных с возможностью перегрузки
$form->setId($this->getParamInt('id'));
if ($form->isSubmit()) { // форм может быть несколько, проверяем эта ли форма отправлена $_POST[имя_формы]
if ($form->validate()) {
$record = News::getRecord($form->getId(), true, true);
$form->merge($record); // с помощью рефлексии запись сама знает как сохраняться
if ($record->trySave()) {
Amdy_Flash::setInfo(__('Запись успешно изменена'));
$this->_redirect('action');
} else {
Amdy_Flash::setNotice(__('Произошла ошибка'));
}
}
} else {
// заполняем форму из модели либо значениями по умолчанию
if ($form->getId()) {
$form->setPost( News::getRecord($form->getId()) );
} else {
$form->setPost();
}
}
$this->assign('form', $form->setEscapeOnShow());
$this->fetchModule($form->getTpl());
}

