Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
Ситуация такая: В БД: есть основная таблица и к ней подчинённая Модели: есть основной класс и класс подчинённой модели. В основном классе массив экземпляров подчинённой модели (note: подчинённая модель содержить blob поле \картинку\) Контроллер: выводит передаёт в шаблон экземпляр основного класса. В браузере via JS: пользователь добавляет новые, изменяет (в т.ч. картинки), удаляет подчинённые объекты и передаёт эту инфу в виде массивов контроллеру на обработку. Контроллер: обновляет основную модель. Получив массив id из браузера, определяет какие подчиненные записи были добавлены и обновлены и соответственно добавляет или обновляет их в модели, удаляет из модели записи, которых нет в переданном из формы массиве. Вызывает сохранение модели. Модель: сохраняет данные в основной таблице, для каждой подчинённой модели вызывает метод сохранения в БД. Удаляет из БД те подчинённые записи, которые отсутствуют в модели(пользователь удалил в браузере) «Немного» запутано. Но так и есть. Дело усложняется тем, что у основной модели может быть несколько массивов с подчинёнными моделями. Получается много кода с кучей IF’ов, циклов по массивам и т.д… который трудно поддерживать Собственно вопрос: Нельзя это сделать как-нибудь по проще? Может есть какие-то паттерны проектирования для таких случаев? поделитесь опытом, плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 11:26 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
jsmirnowwДело усложняется тем, что у основной модели может быть несколько массивов с подчинёнными моделями. Получается много кода с кучей IF’ов, циклов по массивам и т.д… который трудно поддерживатьНе понятно. Пример кода приведите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 12:48 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
jsmirnowwПолучается много кода с кучей IF’ов, циклов по массивам и т.д… который трудно поддерживать а вот тут надо по ситуации и бизнеслогике смотреть. В "Войне и мир" тоже многабукав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 13:21 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
Основная таблица - спортивный клуб, подчинённая - типы турниров, которые он проводит Код в контроллере Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. Примерно тоже самое в методе Save() клуба. Может чуть проще. Более опытный товарищ посоветовал смотреть в сторону ORM. Это действительно поможет убрать дубликат логики из модели. Посоветуйте, плз, конкретный ORM Framework, а то нашёл их много, сторонники каждого ругают остальные. Может подскажете как избавиться от этого нагромождения в контроллере? Может какую-нибудь статью? Фреймворки типаYii, Symphony, ... не предлагать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 14:41 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
автор$tt_Ids = Registry::GetParam('tt_Id'); авторФреймворки типаYii, Symphony, ... не предлагать. чудеса соплестроя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 15:05 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
ScareCrowчудеса соплестроя Спасибо! Оч. ценный совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 16:16 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
авторНельзя это сделать как-нибудь по проще? Может есть какие-то паттерны проектирования для таких случаев? поделитесь опытом, плз. ты неправильно понимаешь что такое модель и что такое контроллер - от этого вся проблема... модель - это то что обрабатывает твои данные (раскладывает их на части, переворачивает и тд), а не только сохраняет\достаёт в\из БД контроллер - "клей" между моделью и представлением в твоём случае, в контроллере передаёшь данные в модель твоя_модель->метод_по_обновлению_типов_турниров($_POST); а в модели !!!, уже крутишь логику по изменению\добавлению\удалению\сохранению данных!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 18:38 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
как то так...в твоём случае, в контроллере передаёшь данные в модель твоя_модель->метод_по_обновлению_типов_турниров($_POST); а в модели !!!, уже крутишь логику по изменению\добавлению\удалению\сохранению данных!!! 1. Таким образом ты усиливаешь связанность представления и модели. 2. Придётся для каждого способа передачи данных в модель писать свой метод_по_обновлению_типов_турниров(...) На мой взгляд модель должна реализовывать бизнес-логику и как дополнительная нагрузка - взаимодействие с БД. А функция "Клея" - передать данные приходящие от представления в модель. И клеёв будет столько, сколько различающихся представлений. я не пытаюсь написать ТТУК. Разделение чёткое: модель - бизнес логика, контроллер - преобразование приходящих данных. или может я не прав? best practice is как то так...твоя_модель->метод_по_обновлению_типов_турниров($_POST);? Мне коллеги насоветовали использовать orm - как минимум избавлюсь от этой логики сохранения в модели. почитал про redbeanphp и doctrine. redbeanphp с первого взгляда проще и по отзывам быстрее. из недостатков - работает только с реляционными БД. но в этом проекте у меня mysql, так что не имеет значения. Посоветуете что-нибудь, пока ничего не написал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 10:04 |
|
||
|
PHP MVC - Вопрос по реализации MVC для форм с подчинёнными списками
|
|||
|---|---|---|---|
|
#18+
авторНа мой взгляд модель должна реализовывать бизнес-логику и как дополнительная нагрузка - взаимодействие с БД. видишь ли в чём дело... ;) отнесись к модели, как некой абстракции! например - удалённый сервис, в который ты передаёшь данные и получаешь от него ответ... тебя не заботит, как там реализован тот или иной метод - есть ли сохранение данных или нету, наличие\отсутствие валидации и т.д. - ты просто что-то отдал и получил своё!!! теперь представление!!! естественно, оно должно!!! собирать\отдавать набор именно тех данных, который нужен от\для модели! Иначе написание отдельного приложения неимеет никакого смысла! ;) Можно работать с сервисом (моделью) напрямую без представления и контроллера!!! контроллер "клей" - собрал набор данных от представления - передал модели (сервису) - получил набор данных от модели (сервиса) - передал представлению автормодель должна реализовывать бизнес-логику в принципе, ты сам же об этом пишешь, но, при этом, переносишь бизнес-логику в контроллер испытывая при этом ряд затруднений... ;) авторМне коллеги насоветовали использовать orm - как минимум избавлюсь от этой логики сохранения в модели. http://en.wikipedia.org/wiki/Object-relational_mapping - ОРМ (ИМХО) тут вообще никаким боком - это отдельная (не самая важная!!!) часть модели, которой вообще может не быть... ;) автор2. Придётся для каждого способа передачи данных в модель писать свой метод_по_обновлению_типов_турниров(...) хм... вот там ты и увидишь насколько уникальны твои отдельные методы и, задумаешься о рефакторинге кода модели!!! со всеми вытекающими!!! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 14:03 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=118&tid=1464052]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 367ms |

| 0 / 0 |
