![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Добрый вечер, Дорогие форумчане!
Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax. Дело в следующем: если есть устоявшаяся структура (а MVC как раз это предполагает), но хотелось бы сделать, например, удаление на лету сообщений. Для этого было бы гораздо удобнее сделать отдельный файл php со скриптом и с помощью функции ajax обращаться к нему.. Ну тут неувязочка... тот скрипт ни чего не знает о БД, о константах, которые используются.... т.е. придется все туда подключать... а через include иногда это невозможно... если например работаем с captch'ей. В общем, хотелось бы узнать у тех, кто работает в MVC, каким образом они делают подобную динамику. Заранее большое спасибо всем! =) |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
А причем тут MVC и ajax?
Одно другому никак не мешает. Вызывайте через ajax свой контроллер и пусть он обращается к модели за удалением сообщения. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
AGENTxXx, при обращение через AJAX, в глобальной переменной $_SERVER появляется новое значение
вот по ней и смотрите как надо отдать ответ. А обращение оставьте по старому (через <a href="url">link</a>), просто повести обработчик на JS. Это позволит избежать проблем, когда у клиента отключен JS -------------------- Amazing |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Можно почитать про вещь, которая в контексте ZF называется contextSwitch. И реализовать у себя аналог.
|
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Fortop - в данном случае так и делал! Но считаю не очень эт удобно..
Ну раньше без MVC кода прогал, то было удобнее, через JS вызывал и все ок! А тут - придется к контроллеру опять обращаться.. Ну в общем понял, что все видно так и делают. MoLeX - на счет - JS и href - спасибо. Что т в последнее время.. да и вообще так не делал))) Я обходился как то noscript и в нем замечанием))) Aliance - хорошо, посмотрю. Может это именно то, что нужно! =) |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вообще-то MVC для того и придуман, чтобы все так делали -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
ksnk - в MVC ни чего не говорится о динамическом взаимодействии (ну где я читал, точно). А для каждого подхода - есть и свои хитрости. Это точно также, как MVC применили к PHP частично ущемляя подходы в стиле ООП - применяют в основном MVC для процедурного подхода в PHP
|
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 13 Всего: 78 |
А при чем тут, извините, динамическое взаимодействие? Принцип хоть при динамическом, хоть при статическом, остается один и тот же - представление обращается к контроллеру (в данном случае). А как оно это делает (через пост, гет, аякс, мысленно) - это уже не парадигма MVC. Суть остается сутью. Пожалуйста, не говорите ерунды. Никто ничего ни к чему не применял. Вы о чем вообще? -------------------- Ll 2 |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
AGENTxXx,
Гммм ... MVC всего лишь структурное расслоение системы, а как использовать тот же слой служб контроллеров уже зависит от разработчика. Фактически и в основном, в этой модели, контроллеры являются службами содержащими сценарии, почему и называются контроллерами сценариев. Но если сам метод будет очень "тонким" и будет содержать только логику управления, соответственно вся бизнес-логика ляжет на предметную область, тогда будет ООП "чистым", иначе, чем "толще" контроллер со сценарием, будет превращаться больше в процедурную (сценарий транзакции или табличный модуль, скорее всего последнее) схему в методе. Опять же для каждой задачи свой принцип лучше. AGENTxXx,
Да, это так, но только при одном условии, если слой View со своей бизнес логикой находится в основном на клиенте. Тогда удобней модель FrontController и PageController. Хотя в принципе можно построить любую схему только на основе слоя служб в виде контроллеров сценариев, бизнес-логики (например Strategy) и слоя данных (например на основе шлюзов данных или ещё лучше ActiveRecord + Gateway). Добавлено @ 17:02
Этим как раз занимается слой служб ApplicationController. Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:05 |
||||||
|
|||||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Guedda,
Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным. Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:21 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
это не смысл в MVC пропадает. Это вы нарушили его парадигму. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Хммм .... вообще то я о построении архитектуры изначально. Если клиент "толстый" то MVC на сервере несостоятельно в этом контексте. Впринципе довольно несложно рефакторить систему из MVC, если потребуется переход на толстый клиент. Сам принцип переноса слоя представления на клиент уже делает часть View на сервере просто ненужной и не используемой. Это сообщение отредактировал(а) Sentox - 17.5.2012, 21:46 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Во-первых, у вас 1но приложение, а не два разных. Во-вторых, все веб приложения в той или иной степени переносят слой представления на клиент, что ничуть не опровергает архитектуру MVC. В-третьих Вы уж определитесь, то ли MVC у вас становится ненужным как архитектура, то ли view -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Guedda - не совсем понял ваше цитирование моих слов! Я с ними полностью согласен. MVC - для ООП, а в php часто пользуются процедурным подходом применяя MVC!
Так что давайте по делу! Есть ли те, кто не через контроллер делает, а другим подходом? =) P.S. Ребята, я понимаю что вы все хотите помочь, но основной вопрос все же был - как сделать удобнее динамические обращения. Ну вот смотрите: есть у нас контроллер, к которому мы должны обратиться и он пошлет нас по адресу. Ну а контроллер весит например 500 кб, а нужная нам часть - всего 10 кб. В итоге затраты 490 кб лишних... В общем - то ли тех, кто на MVC и с динамикой - все устраивает, то ли я чтот не так делаю..... |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Это вообще то часть архитектуры MVC, для чего я и пишу на английском а слой представления указываю как абстракцию.
Вы наверное немного недопонимаете концепцию слоёв и уровней. Слой системы может находится на физическом уровне клиента. Я ж специально привёл примеры его программирования на других языках. Допустим тот же слой представления (часть View от MVC) будет на клиенте реализован в JS, тогда часть View просто не используется в этой архитектуре на PHP. И это всё
Пример: есть толстый клиент написанный на JS и выполняет полностью логику представления (шаблонизация)(кстати ещё лучше пример с пользовательскими скриптами для браузеров). Используя YII (MVC) уровень представления почти не используется только активно учавствует Controller<->ModelData. На сервере только хранятся шаблоны html, которые использует JS на клиенте. Тот же эффект и на клиенте JAVA да же со своими окнами но шаблоны в другом формате. Это сообщение отредактировал(а) Sentox - 17.5.2012, 22:59 |
||||||
|
|||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |