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

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

  • Абырвалг

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

    Spritz 17 сентября 2010 г. 4: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

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

    Spritz 17 сентября 2010 г. 4:29, спустя 9 минут 56 секунд

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

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

    Spritz 17 сентября 2010 г. 4:35, спустя 5 минут 17 секунд

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

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

    Spritz 17 сентября 2010 г. 4:35, спустя 14 секунд

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

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

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

    Spritz 17 сентября 2010 г. 6:00, спустя 1 час 25 минут 6 секунд

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

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

    Spritz 17 сентября 2010 г. 6:58, спустя 57 минут 58 секунд

    :_default/fo/Users/add

    class users extends FormObject {

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


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

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

    Spritz 17 сентября 2010 г. 14:59, спустя 8 часов 53 секунды

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

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

    Spritz 17 сентября 2010 г. 21:49, спустя 6 часов 50 минут 24 секунды

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

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

    Spritz 17 сентября 2010 г. 22:40, спустя 51 минуту 3 секунды

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

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

    Spritz 17 сентября 2010 г. 22:47, спустя 6 минут 47 секунд


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

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

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

    Spritz 17 сентября 2010 г. 23:33, спустя 46 минут 6 секунд


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

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

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

    Spritz 17 сентября 2010 г. 23:34, спустя 1 минуту 20 секунд

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

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

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

    Spritz 17 сентября 2010 г. 23:39, спустя 4 минуты 10 секунд

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

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

    Spritz 17 сентября 2010 г. 23:48, спустя 9 минут 43 секунды


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

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

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

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

    Spritz 17 сентября 2010 г. 23:59, спустя 10 минут 24 секунды

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

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

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