Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
читаю доку по CI при простой реализации вроде все просто (относительно)
возникает 2 вопроса
1) правило маршрузитации "класс/метод/[свойства/...]"
а если например в будущем захочу реализовать также и ajax-совую подгрузку контента, теоретически ссылка должна быть следующая /ajax/класс/метод/параметры
как избежать дублирования методов?
теоретически получается должно быть 2 основных класса:
1.1) обычный вывод 1.2) аяксовый
и уже каждый должен отдельно формировать контент к выводу,
обычный впихивать в шаблон и выводить, а аяксовый всовывать в json структуру. и тоже выводить
какая то нифига се иерархия получается, может я чет не так понял?
2) а разве есть (могут ли быть) еще какие то общие методы доступные из вне кроме вывода?
тоесть вывод статьи, или вывод отзыва (Добавление)
третий вопрос возник: а как внутри одного контрола получить результат работы другого?
Viper
Отправлено: 24 Февраля, 2012 - 15:12:47
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
DlTA а зачем дублировать? Можно просто добавить проверку что если контент ajax, то грузим тот же самый контроллер, с теми же методами, но в view мы выводим json, либо не подгружая view, сразу в контроллере плюем json.
Есть второй способ. Создать отдельный контроллер ajax и в нем создавать необходимые методы.
DlTA пишет:
третий вопрос возник: а как внутри одного контрола получить результат работы другого?
вы же метод вызываете. А не весь объект. Точно не помню но то ли в манах то ли на форуме где-то написанно как вызывать другой метод контроллера внутри другого.
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Viper пишет:
Есть второй способ. Создать отдельный контроллер ajax и в нем создавать необходимые методы.
это и есть дубрирование,
например: хочу аяксом грузить статью в content
для этого надо сначала пнуть контроллер Article чтоб тот из модели получил мне статью, применив нужный вывод сверстал мне ее, и уже это все аяксом залить в нужный блок content, и при этом у меня ведь не только блок content изменится но еще и title, меню (чет еще), и все эти изменения ведь должны прийти по аяксу,
да можно создать в классе article метод ajax но по сути это же будет полное дублирование кода метода view, что не очень хорошо.
Viper
Отправлено: 27 Февраля, 2012 - 10:35:54
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
DlTA пишет:
это и есть дубрирование
дублирование чего? зачем вам одинаковые методы в обоих контроллерах?
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Viper пишет:
дублирование чего? зачем вам одинаковые методы в обоих контроллерах?
у меня такое ощущение что путаю понятие контрола и модели, а также недостаток обстракции
например: перехожу в какой нить контрол "статья"
для генерации контента мне нужны: состояние каталога, список статей или текст статьи, генерация хлебных крошек;
прежде думал что все эти элементы должен генерить контрол, отсюда и выходило дублирование методов, но пораскинув мозгами понял, что каждый из элементов генерится отдельной моделью в которой при необходимости происходит и кеширование данных и правильно б было еще и вид подготовить,
но тогда опять непонятки с парадигмой МВЦ ибо на подготовку вида отправляет даныне модель а должен контрол, но если это будет делать контрол то тогда это уже будет дублирование кода, так как к примеру вид каталога надо генерить как из контрола статья так и из контрола отзывы, а так же для аяксовых методов.
что не так?
Viper
Отправлено: 27 Февраля, 2012 - 13:21:45
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
DlTA дублирование методов модели нормальный случай. Модель возвращает результаты обработки данных. А уже контроллер передает их дальше в вьюшку. Собстно для "хлебных крошек" даже вьюшку не надо.
Все же стоит подумать о глобальных классах хелперах, дабы максимально свести обработку одинаковых данных к одному классу/методу.
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Viper пишет:
Все же стоит подумать о глобальных классах хелперах
думал, но скорее не как о хелперах, а как о собственных библиотека для работы с моделью элементов, но в данном случае теряется смысл использования CI,
получается что я пишу проект с нуля все лишь испоьльзую некоторый функционал фреймверка
+ к тому же меня жутко напрягает то что он весь построен на __get, __set, ...
и IDE не может его нормально хавать из за этого только частично некий CodeLobster
я в чем то ошибся?
Viper
Отправлено: 27 Февраля, 2012 - 14:27:49
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Viper пишет:
IDE не использую.
а остальные нюансы как реализуешь?
Viper
Отправлено: 28 Февраля, 2012 - 15:07:56
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
DlTA пишет:
а остальные нюансы как реализуешь?
обычно выношу все повторяющееся в библиотеки и хелперы. + делаю проверку на тип документа(иногда на проверку есть ли переменная ajax) и если есть то использую не отдельный контроллер, а в стандартном делаю обработку.
вообще тут http://net[dot]tutsplus[dot]com/sessions[dot][dot][dot]er-from-scratch/ довольно хорошие скринкасты, я многие из них посмотрел, а сам AJAX использую так - тот же контроллер, тот же метод, просто в нем проверяю AJAX ли запрос был принят.. И уже в зависимости от ситуации - возвращаю либо json, либо цифру
по поводу UTF-8 попробуй напрямую в <head></head> прописать <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.