ФорумПрограммированиеPHP для идиотов → Варианты реализации CRUD

Варианты реализации CRUD

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Сен. 17, 2010, 3:19 п.п.

    вариант 1 (как я делаю в своих проджектах)

    форма добавления: article/add,
    редактирования: article/edit/id/10
    сохранение происходит по тем же адресам.

    if ($this->getRequest()->isPost()) {
    // форма отправлена, делаем валидацию.
    // валидация прошла -> сохраняем, редиректим на список
    // не прошла - рендерим форму со значениями из $this->getRequest()->getPost()
    }
    // рендерим форму со значениями из базы (редактирование) или с пустыми значениями (новая запись)


    вариант 2 (как на работе сейчас)

    форма добавления: article/add,
    редактирования: article/edit/id/10
    сохранение происходит по адресу article/save или article/save/id/10
    if ($this->getRequest()->isPost()) {
    // форма отправлена, делаем валидацию.
    // валидация прошла -> сохраняем, редиректим на список
    // не прошла -> записываем $this->getRequest()->getPost() в сессию, делаем редирект на форму редактирования
    }



    как лучше? Может быть у вас есть варианты? Мне вариант с сессиями не нравится
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Сен. 17, 2010, 3:29 п.п., спустя 9 минут 56 секунд

    первый получше будет, только у меня редактирование article/edit/10
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Сен. 17, 2010, 3:35 п.п., спустя 5 минут 17 секунд

    Первый - стандартный вариант, вполне нормальный
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Сен. 17, 2010, 3:35 п.п., спустя 14 секунд

    только у меня редактирование article/edit/10

    лучше указывать имя параметра, так как в некоторых случаях нужно указывать несколько параметров. Например переводы: неймспейс и токен
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz Сен. 17, 2010, 5 п.п., спустя 1 час 25 минут 6 секунд

    ага, отписался, хотел уже ответ отправить, но ещё раз перечитал и понял что в начале не правильно тебя понял. В общем да, как и предыдущие ответчики - первый вариант, имхо, лучше. НО с другой стороны, мохнатость яиц не меняет от того, слева на них смотреть или справа. Главное чтоб функцию свою выполняли корректно.
    В общем, вопрос хуйня!
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Сен. 17, 2010, 5:58 п.п., спустя 57 минут 58 секунд

    :_default/fo/Users/add

    class users extends FormObject {

    ….
    public function onSave($data)
    {
    }
    }


    :)
    Сапожник без сапог
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Сен. 18, 2010, 1:59 д.п., спустя 8 часов 53 секунды

    phpdude, нихуя се ты загибаешь ;)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Сен. 18, 2010, 8:49 д.п., спустя 6 часов 50 минут 24 секунды

    kostyl, у меня формы можно расширять из других мест, и onSave вызывается только для данный формы( для участка расщирения), то есть это не тот же пост )
    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Сен. 18, 2010, 9:40 д.п., спустя 51 минуту 3 секунды

    второй
    причём отдельные экшны для sreate_save и update_save
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Сен. 18, 2010, 9:47 д.п., спустя 6 минут 47 секунд


    второй
    причём отдельные экшны для sreate_save и update_save
    так же делаешь?)

    ну да, методы у меня отдельные и непривязаны, любая форма может поддерживать больше 3 методов - тобишь больше onDelete, OnNew, OnEdit :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Сен. 18, 2010, 10:33 д.п., спустя 46 минут 6 секунд


    второй
    причём отдельные экшны для sreate_save и update_save

    зачем? они ж одинаковые на 90%
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Сен. 18, 2010, 10:34 д.п., спустя 1 минуту 20 секунд

    зачем? они ж одинаковые на 90%

    да ну? ты же с магентой работаешь, там формы редактирования и создания одинаковые? и делают одно и тоже? оО
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Сен. 18, 2010, 10:39 д.п., спустя 4 минуты 10 секунд

    чем форма редактирования от формы создания отличается? Да ничем в 90% случаев
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Сен. 18, 2010, 10:48 д.п., спустя 9 минут 43 секунды


    чем форма редактирования от формы создания отличается? Да ничем в 90% случаев
    ты прав, и вот самое сложное - как раз эти 10%. смешивать похожее - получить гору ифов и все :)

    не люблю ифы :)

    к тому же при наследовании вообще похую чо там да как. 10 строк и форма с обработкой готова)
    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Сен. 18, 2010, 10:59 д.п., спустя 10 минут 24 секунды

    чем форма редактирования от формы создания отличается?

    форма - не отличается, отличается процесс обработки
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!