расширение функционала

AmdY

Пью пиво
Команда форума
В этом случае нельзя будет простым способом (верстальщику) добавить/изменить атрибуты HTML элемента.
если сюда и верстальщика подключать, то не о какой универсальности и лёгком добавлении полей нельзя и думать. У меня формы строятся автоматически, но на текущем проекте это невозможно, т.к. форму сразу должен отрисовать дизайнер, затем верстальщик разместить элементы т.к. в дизайне, а затем программист закодить в php? не нужно стремиться к 100% автоматизации иногда уместна не уместна, реши вопрос хотя бы для 90% случаев.
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());
    }
 

zerkms

TDD infected
Команда форума
AmdY
а после $this->_redirect('action'); код прерывается?
просто привык обычно "на всякий пожарный" ставить return; после таких штук :)
 

AmdY

Пью пиво
Команда форума
конечно прерывается, хотя я тоже поначалу ставил die(), тоже и при $ajax->send(). return здесь не поможет, так как юзаю компонентный подход и может ещё куча кода выполниться, недоработки архитектуры в моей вечно альфе :(
 

fixxxer

К.О.
Партнер клуба
У меня для такого есть RedirectException, и еще AbortException. :)

Хоть и прекрасно понимаю, что исключения не для этого. Даже один раз убрал и сделал на return-ах. Но удобство и перевесило в итоге - надоело забывать правильно обработать вложенные вызовы методов =)
 

ps2007

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

AmdY

Пью пиво
Команда форума
ps2007
использую всегда чужое, кроме случаев когда могу сделать лучше, или удобнее лично для моего подхода. Иногда переписываю готовое как в случае smarty или класс для работы с картинками не подходил, пришлось поменять структуру под пиар стиль. Плохо, конечно, но .... А по поводу ограничений, они как раз очень жёсткие, когда начинал писать, думал будут в студии джуниоры на нём писать.

fixxxer
действительно, удобнее чем ретурн, можно на пару уровней подняться аж до catch в index.php, узаконенный goto
 
Сверху