Как стать автором
Обновить

Комментарии 13

Я например обычно использую viewScript для всей формы, а стандартные декораторы отключаю нафиг. Т.е. можно прям в форме перед рендерингом элемента, отрисовать картинку.
И еще одно маленькое замечание по коду: вот вы сначала удаляете картинку, а только потом в базу пишете, а что если произойдет сбой и данные в бд не сохраняться, а файл то уже того… удален. Тут собственно не плохо бы транзакцию использовать.
либо вначале делать изменения в БД, а потом уже если изменение удачное, то удалять файл. Спасибо, учту.
Это тоже не верно, т.к. вы можете успешно сделать изменение в БД, а файл удалить не сможете, например в этот момент он будет кем — то использоваться.
В контексте когда один администратор работает с админкой такое невоможно. Если говорить в общем и целом, то да, Вы правы — транзакции более надежны, но чуть сложнее в реализации.
Вы же не уточнили, что ваш код применим только для админки, это существенно меняет дело :)
Ну писался он именно для админки. Но Ваше замечание вполне к месту, я обязательно учту это дело. Лучше перестраховаться, мало ли там чего.
Э… а как Вы файловые операции в транзакцию БД завернете?
$db->beginTransaction()
try {
    $model->save();
    if(!$file->save()) {
         throw new Zend_Exception();
    }
    $db->commit();
} catch(Zend_Exception $e) {
    $db->rollBack();
}
А если при комите произойдет ошибка и транзакция откатится? Файл то уже того… удален, а данные в БД остались
Мой вам совет, пишите продукт для себя или для кого — то, бэкенд или фронт, это не должно иметь значения, код должен быть безопасным на столько, насколько это возможно.
Я отказался от зендовских форм, стало проще.
попробуйте сделать конструктор форм для пользователя без использования Zend_Form — поймете всю прелесть компонента
Мне кажется, что
— ваш декоратор дублирует родной код, в частности рисование label, errors и т.п. можно оставить родным дектораторам. Обычно декоратор декорирует, а не «рисует всё»
— так pastebin.com/yMAK8tct лучше, чем так pastebin.com/w5ycEDM6, а можно ещё и неймспейс ваших фильтров добавить и подключать аналогично иным (родным) фильтрам [вкусовщина, да]
— рисовать декоратором чекбокс, а потом принимать его значение в обход form->getValues() напрямую из реквеста — некрасиво. Идеологически вернее было бы этому чаекбоксу появится не в связи с новым декторатором, а в связи с новым элементом «checkbox» в форме.
— создавать внутри формы модели и использовать их — некрасиво. Правильно — передавать данные форме при создании, тем более что в этом конкретном случае — это опции выпадающего списка
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории