Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MVC + динамика(ajax), динамическая работа с данными 
V
    Опции темы
AGENTxXx
  Дата 16.5.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Добрый вечер, Дорогие форумчане!

Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax.
Дело в следующем: если есть устоявшаяся структура (а MVC как раз это предполагает), но хотелось бы сделать, например, удаление на лету сообщений. Для этого было бы гораздо удобнее сделать отдельный файл php со скриптом и с помощью функции ajax обращаться к нему.. Ну тут неувязочка... тот скрипт ни чего не знает о БД, о константах, которые используются.... т.е. придется все туда подключать... а через include иногда это невозможно... если например работаем с captch'ей. В общем, хотелось бы узнать у тех, кто работает в MVC, каким образом они делают подобную динамику.

Заранее большое спасибо всем! =)
PM MAIL   Вверх
Fortop
Дата 16.5.2012, 21:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



А причем тут MVC и ajax?

Одно другому никак не мешает.
Вызывайте через ajax свой контроллер и пусть он обращается к модели за удалением сообщения.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
MoLeX
Дата 17.5.2012, 05:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



AGENTxXx, при обращение через AJAX, в глобальной переменной $_SERVER появляется новое значение
Код

var_dump($_SERVER['HTTP_X_REQUESTED_WITH']);

вот по ней и смотрите как надо отдать ответ. А обращение оставьте по старому (через <a href="url">link</a>), просто повести обработчик на JS. Это позволит избежать проблем, когда у клиента отключен JS 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Aliance
Дата 17.5.2012, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Можно почитать про вещь, которая в контексте ZF называется contextSwitch. И реализовать у себя аналог.
PM MAIL WWW ICQ Skype   Вверх
AGENTxXx
Дата 17.5.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Fortop - в данном случае так и делал! Но считаю не очень эт удобно..
Ну раньше без MVC кода прогал, то было удобнее, через JS вызывал и все ок! А тут - придется к контроллеру опять обращаться.. Ну в общем понял, что все видно так и делают.

MoLeX - на счет - JS и href - спасибо. Что т в последнее время.. да и вообще так не делал))) Я обходился как то noscript и в нем замечанием)))

Aliance - хорошо, посмотрю. Может это именно то, что нужно! =)


PM MAIL   Вверх
ksnk
Дата 17.5.2012, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(AGENTxXx @  17.5.2012,  10:46 Найти цитируемый пост)
 А тут - придется к контроллеру опять обращаться.. Ну в общем понял, что все видно так и делают.

Вообще-то MVC для того и придуман, чтобы все так делали smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AGENTxXx
Дата 17.5.2012, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



ksnk - в MVC ни чего не говорится о динамическом взаимодействии (ну где я читал, точно). А для каждого подхода - есть и свои хитрости. Это точно также, как MVC применили к PHP частично ущемляя подходы в стиле ООП - применяют в основном MVC для процедурного подхода в PHP
PM MAIL   Вверх
Guedda
Дата 17.5.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(AGENTxXx @  17.5.2012,  15:07 Найти цитируемый пост)
 в MVC ни чего не говорится о динамическом взаимодействии

А при чем тут, извините, динамическое взаимодействие? Принцип хоть при динамическом, хоть при статическом, остается один и тот же - представление обращается к контроллеру (в данном случае). А как оно это делает (через пост, гет, аякс, мысленно) - это уже не парадигма MVC. Суть остается сутью. 
Цитата(AGENTxXx @  17.5.2012,  15:07 Найти цитируемый пост)
MVC применили к PHP

Пожалуйста, не говорите ерунды. Никто ничего ни к чему не применял. Вы о чем вообще?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sentox
Дата 17.5.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



AGENTxXx, 
Цитата

Это точно также, как MVC применили к PHP частично ущемляя подходы в стиле ООП - применяют в основном MVC для процедурного подхода в PHP 


Гммм ... MVC всего лишь структурное расслоение системы, а как использовать тот же слой служб контроллеров уже зависит от разработчика. Фактически и в основном, в этой модели, контроллеры являются службами содержащими сценарии, почему и называются контроллерами сценариев. Но если сам метод будет очень "тонким" и будет содержать только логику управления, соответственно вся бизнес-логика ляжет на предметную область, тогда будет ООП "чистым", иначе, чем "толще" контроллер со сценарием, будет превращаться больше в процедурную (сценарий транзакции или табличный модуль, скорее всего последнее) схему в методе. 
Опять же для каждой задачи свой принцип лучше.

AGENTxXx, 
Цитата

Столкнулся с неудобством подхода MVC и динамики, реализованной, например, ajax.


Да, это так, но только при одном условии, если слой View со своей бизнес логикой находится в основном на клиенте. Тогда удобней модель FrontController и PageController.
 Хотя в принципе можно построить любую схему только на основе слоя служб в виде контроллеров сценариев, бизнес-логики (например Strategy) и слоя данных (например на основе шлюзов данных или ещё лучше ActiveRecord + Gateway).

Добавлено @ 17:02
Цитата

Ну тут неувязочка... тот скрипт ни чего не знает о БД, о константах, которые используются.... т.е. придется все туда подключать... а через include иногда это невозможно... если например работаем с captch'ей. 


Этим как раз занимается слой служб ApplicationController.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:05
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Guedda, 
Цитата

А при чем тут, извините, динамическое взаимодействие? Принцип хоть при динамическом, хоть при статическом, остается один и тот же - представление обращается к контроллеру (в данном случае). А как оно это делает (через пост, гет, аякс, мысленно) - это уже не парадигма MVC. Суть остается сутью. 


Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 17:21
PM MAIL   Вверх
Fortop
Дата 17.5.2012, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

это не смысл в MVC пропадает. Это вы нарушили его парадигму.



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Fortop @ 17.5.2012,  20:49)
Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
Если клиент (например на JS или на JAVA) содержит логику слоя представления и некоторую часть бизнес логики, смысл в MVC для сервера пропадает, да же становится не удобным и не нужным.

это не смысл в MVC пропадает. Это вы нарушили его парадигму.

Хммм .... вообще то я о построении архитектуры изначально. 
Если клиент "толстый" то MVC на сервере несостоятельно в этом контексте.  Впринципе довольно несложно рефакторить систему из MVC, если потребуется переход на толстый клиент. Сам принцип переноса слоя представления на клиент уже делает часть View на сервере просто ненужной и не используемой.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 21:46
PM MAIL   Вверх
Fortop
Дата 17.5.2012, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sentox @  17.5.2012,  21:06 Найти цитируемый пост)
Сам принцип переноса слоя представления на клиент уже делает часть View на сервере просто ненужной и не используемой.

Во-первых, у вас 1но приложение, а не два разных.
Во-вторых, все веб приложения в той или иной степени переносят слой представления на клиент, что ничуть не опровергает архитектуру MVC.

В-третьих
Цитата(Sentox @  17.5.2012,  17:20 Найти цитируемый пост)
смысл в MVC для сервера пропадает

Цитата(Sentox @  17.5.2012,  21:06 Найти цитируемый пост)
 уже делает часть View на сервере


Вы уж определитесь, то ли MVC у вас становится ненужным как архитектура, то ли view 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGENTxXx
Дата 17.5.2012, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Guedda - не совсем понял ваше цитирование моих слов! Я с ними полностью согласен. MVC - для ООП, а в php часто пользуются процедурным подходом применяя MVC!

Так что давайте по делу! Есть ли те, кто не через контроллер делает, а другим подходом? =)

P.S. Ребята, я понимаю что вы все хотите помочь, но основной вопрос все же был - как сделать удобнее динамические обращения. Ну вот смотрите: есть у нас контроллер, к которому мы должны обратиться и он пошлет нас по адресу. Ну а контроллер весит например 500 кб, а нужная нам часть - всего 10 кб. В итоге затраты 490 кб лишних... В общем - то ли тех, кто на MVC и с динамикой - все устраивает, то ли я чтот не так делаю..... 
PM MAIL   Вверх
Sentox
Дата 17.5.2012, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Fortop @ 17.5.2012,  22:02)
Вы уж определитесь, то ли MVC у вас становится ненужным как архитектура, то ли view

Это вообще то часть архитектуры MVC, для чего я и пишу на английском а слой представления указываю как абстракцию.

Цитата

Во-первых, у вас 1но приложение, а не два разных.
Во-вторых, все веб приложения в той или иной степени переносят слой представления на клиент, что ничуть не опровергает архитектуру MVC.


Вы наверное немного недопонимаете концепцию слоёв и уровней. Слой системы может находится на физическом уровне клиента.
Я ж специально привёл примеры его программирования на других языках. Допустим тот же слой представления (часть View от MVC) будет на клиенте реализован в JS, тогда часть View просто не используется в этой архитектуре на PHP. И это всё 
Цитата

у вас 1но приложение


Пример: есть толстый клиент написанный на JS и выполняет полностью логику представления (шаблонизация)(кстати ещё лучше пример с пользовательскими скриптами для браузеров). Используя YII (MVC) уровень представления почти не используется только активно учавствует Controller<->ModelData. На сервере только хранятся шаблоны html, которые использует JS на клиенте. Тот же эффект и на клиенте JAVA да же со своими окнами но шаблоны в другом формате.

Это сообщение отредактировал(а) Sentox - 17.5.2012, 22:59
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.