Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: подскажите по CI
Форумы портала PHP.SU » » CMS и фреймворки » подскажите по CI

Страниц (1): [1]
 

1. DlTA - 24 Февраля, 2012 - 13:58:50 - перейти к сообщению
читаю доку по CI при простой реализации вроде все просто (относительно)
возникает 2 вопроса
1) правило маршрузитации "класс/метод/[свойства/...]"
а если например в будущем захочу реализовать также и ajax-совую подгрузку контента, теоретически ссылка должна быть следующая /ajax/класс/метод/параметры
как избежать дублирования методов?
теоретически получается должно быть 2 основных класса:
1.1) обычный вывод 1.2) аяксовый
и уже каждый должен отдельно формировать контент к выводу,
обычный впихивать в шаблон и выводить, а аяксовый всовывать в json структуру. и тоже выводить
какая то нифига се иерархия получается, может я чет не так понял?

2) а разве есть (могут ли быть) еще какие то общие методы доступные из вне кроме вывода?
тоесть вывод статьи, или вывод отзыва
(Добавление)
третий вопрос возник: а как внутри одного контрола получить результат работы другого?
2. Viper - 24 Февраля, 2012 - 15:12:47 - перейти к сообщению
DlTA а зачем дублировать? Можно просто добавить проверку что если контент ajax, то грузим тот же самый контроллер, с теми же методами, но в view мы выводим json, либо не подгружая view, сразу в контроллере плюем json.

Есть второй способ. Создать отдельный контроллер ajax и в нем создавать необходимые методы.

DlTA пишет:
третий вопрос возник: а как внутри одного контрола получить результат работы другого?
вы же метод вызываете. А не весь объект. Точно не помню но то ли в манах то ли на форуме где-то написанно как вызывать другой метод контроллера внутри другого.
3. DlTA - 24 Февраля, 2012 - 15:30:17 - перейти к сообщению
Viper пишет:
Есть второй способ. Создать отдельный контроллер ajax и в нем создавать необходимые методы.
это и есть дубрирование,
например: хочу аяксом грузить статью в content
для этого надо сначала пнуть контроллер Article чтоб тот из модели получил мне статью, применив нужный вывод сверстал мне ее, и уже это все аяксом залить в нужный блок content, и при этом у меня ведь не только блок content изменится но еще и title, меню (чет еще), и все эти изменения ведь должны прийти по аяксу,

да можно создать в классе article метод ajax но по сути это же будет полное дублирование кода метода view, что не очень хорошо.
4. Viper - 27 Февраля, 2012 - 10:35:54 - перейти к сообщению
DlTA пишет:
это и есть дубрирование
дублирование чего? зачем вам одинаковые методы в обоих контроллерах?
5. DlTA - 27 Февраля, 2012 - 11:53:24 - перейти к сообщению
Viper пишет:
дублирование чего? зачем вам одинаковые методы в обоих контроллерах?
у меня такое ощущение что путаю понятие контрола и модели, а также недостаток обстракции

например: перехожу в какой нить контрол "статья"
для генерации контента мне нужны: состояние каталога, список статей или текст статьи, генерация хлебных крошек;
прежде думал что все эти элементы должен генерить контрол, отсюда и выходило дублирование методов, но пораскинув мозгами понял, что каждый из элементов генерится отдельной моделью в которой при необходимости происходит и кеширование данных и правильно б было еще и вид подготовить,
но тогда опять непонятки с парадигмой МВЦ ибо на подготовку вида отправляет даныне модель а должен контрол, но если это будет делать контрол то тогда это уже будет дублирование кода, так как к примеру вид каталога надо генерить как из контрола статья так и из контрола отзывы, а так же для аяксовых методов.

что не так?
6. Viper - 27 Февраля, 2012 - 13:21:45 - перейти к сообщению
DlTA дублирование методов модели нормальный случай. Модель возвращает результаты обработки данных. А уже контроллер передает их дальше в вьюшку. Собстно для "хлебных крошек" даже вьюшку не надо.

Все же стоит подумать о глобальных классах хелперах, дабы максимально свести обработку одинаковых данных к одному классу/методу.
7. DlTA - 27 Февраля, 2012 - 14:22:42 - перейти к сообщению
Viper пишет:
Все же стоит подумать о глобальных классах хелперах

думал, но скорее не как о хелперах, а как о собственных библиотека для работы с моделью элементов, но в данном случае теряется смысл использования CI,
получается что я пишу проект с нуля все лишь испоьльзую некоторый функционал фреймверка
+ к тому же меня жутко напрягает то что он весь построен на __get, __set, ...
и IDE не может его нормально хавать из за этого только частично некий CodeLobster

я в чем то ошибся?
8. Viper - 27 Февраля, 2012 - 14:27:49 - перейти к сообщению
Улыбка IDE не использую.
9. DlTA - 27 Февраля, 2012 - 14:37:53 - перейти к сообщению
Viper пишет:
IDE не использую.
а остальные нюансы как реализуешь?
10. Viper - 28 Февраля, 2012 - 15:07:56 - перейти к сообщению
DlTA пишет:
а остальные нюансы как реализуешь?
обычно выношу все повторяющееся в библиотеки и хелперы. + делаю проверку на тип документа(иногда на проверку есть ли переменная ajax) и если есть то использую не отдельный контроллер, а в стандартном делаю обработку.

т.е. правило будет /класс/метод/ajax/параметры
11. DlTA - 06 Марта, 2012 - 14:48:48 - перейти к сообщению
[quote][/quote]

использую CI (2.x) с расширением HMVC (соответствующее) // может от чего то зависит)

так вот вопрос, как ci указать чтоб он вернул нужный мне заголовок?
а именно "charset=UTF-8"

в конфиге прописано $config['charset'] = 'UTF-8'; но заголовок возвращается стандартный "charset=windows-1251"

в запускаемом методе даже указал
$this->output->set_header('Content-Type:text/html; charset=UTF-8');
результат тот же
12. Tonik992 - 06 Марта, 2012 - 17:00:59 - перейти к сообщению
DlTA пишет:
читаю доку по CI при простой реализации вроде все просто (относительно)
возникает 2 вопроса

вот видео - как один из вариантов использования ajax с CI..
http://net[dot]tutsplus[dot]com/tutorial[dot][dot][dot]atch-day-8-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"/>
13. DlTA - 06 Марта, 2012 - 17:36:45 - перейти к сообщению
Tonik992 пишет:
<head></head> прописать <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
прописано
но так как хост возвращает заголовок win-1251 то и все браузеры по умолчанию думают что дока в win-1251

можно былоб принудительно де нить в файлах выдать заголовок, но хотелось бы по правилам разработчика

 

Powered by ExBB FM 1.0 RC1