Yii Xss-фильтр
Обновил свой Xss-фильтр для фреймворка Yii.
Добавлено несколько новых возможностей.
Подробности
Yii 1.0.7
Сегодня вышел очередной релиз фреймворка Yii.
В версии 1.0.7 исправлено свыше десятка ошибок и недочетов, добавлено столько же новых возможностей.
Юпи! 0.0.1
Юпи! 0.0.1
Выход первой версии моего движка задерживается! Навалилось много работы — на все про все не хватает времени!
Тем не менее, определил список основных задач, которые должны быть решены до выхода версии 0.0.1, с ними можно ознакомиться здесь http://code.google.com/p/xomaprojects/issues/list (задачи помечены меткой Release0.0.1). Так же выложил первую сырую, но рабочую версию пробуем и сообщаем об ошибках!
p.s. Хотелось бы еще раз поблагодарить Ozzy, за проведенное им маленькое тестирование!читать в jj
Основной сайт Юпи! — http://yupe.ru
Исходный код — https://github.com/yupe/yupe
Присоединяйтесь!
Yii 1.0.6
Yii радует нас очередным обновлением! Версия 1.0.6 включает больше 10 новых фич и несколько баг фиксов!
Для себя особо отметил следующие нововведения:
- yiic может генерировать модели сразу для всех таблиц в базе данных (обязательно попробую)
- yiic генерирует связи между таблицами в моделях
- в составе yii появился компонент для файлового кеша (давно его ждал)
Вот такие вот новости на сегодня!
А между тем почти готова первая (0.0.1) версия Юпи! на этой неделе будет первая рабочая демка!
Удачного yii-кодинга друзья!
Движок блога на Yii. Front и back разделение.
Предыдущие серии
2 Yii, создаем свою CMS. База данных
Наверное в каждом веб-приложении возникает задача разделения, так называемой клиентской или public части — та часть веб-сайта или веб-приложения с которой работает пользователь и админ или back части - часть сайта, с которой работают администраторы, контент-менеджеры и прочие пользователи, отвечающие за наполнение сайта. Сегодня я хочу поговорить о том как это сделать, при использовании фреймворка Yii и какой способ выбрал я при разработке Юпи!.
Критериями для выбора способа будут являться следующие:
- простота реализации
- необходимость выполнять дополнительные «тело движения» (править .htaccess, колдовать с роутингом и т.д.)
И так…
При использовании Yii можно поступить несколькими способами:
- Создать контроллер Admin или Back и всю логику админки реализовывать там;
- В каталоге Controllers создать подкаталог admin или back и все контроллеры и экшены для админки располагать там;
- Админка в виде отдельного модуля Yii;
- Создать два приложения — одно для админской части, другое для клиентской;
Все четыре способа упорядочены по сложности их реализации и по необходимости выполнять дополнительные действия — т.е. писать код!
Кратко рассмотрим достоинства и недостатки каждого из них.
1 Создать контроллер Admin или Back и всю логику админки реализовывать там — наверное самый простой способ.
Достоинтва:
- простота реализации;
- модели используются всем приложением;
Недостатки:
- если админка будет очень большая (с большим функционалом), наш контроллер «раздуется» до огромных размеров, что затруднит сопровождение проекта (эту проблему, отчасти может решить вынесение экшенов в отдельные классы);
- нет отделения админки от остальных частей проекта;
2 В каталоге Controllers создать подкаталог admin или back и все контроллеры и экшены для админки располагать там — второй по сложности реализации способ, забегая вперед, скажу, что я выбрал именно его.
Достоинства:
- админка физически (на уровне каталога файловой системы) отделена от остальных частей проекта, причем это отделение касается не только каталога Controllers, но и каталога View;
- модели используются всем приложением;
Недостатки:
я пока их не нашел
3 Админка в виде отдельного модуля Yii — по правде говоря, кода я начал разрабатывать Юпи! и столкнулся с проблемой разделения на back и front части — тогда еще не было поддержки модулей в Yii (она появилась в версии 1.0.3), поэтому данный способ я не рассматривал. Если кто-то пытался поступить таким образом — прошу рассказать о своем опыте в комментариях.
4 Создать два приложения — одно для админской части, другое для клиентской — как мне кажется, самый трудоемкий способ.
Достоинства они же, от части, являются и недостатками:
- части системы полностью изолированы друг от друга, из этого следует что без «пляски с бубнами» и дополнительных опций в конфиге не получится использовать модели и библиотеки одного приложения в другом, а отсюда вытекает дублирование кода и все что с ним связано.
Для себя я выбрал способ №2, он, как мне кажется, наиболее удовлетворяет всем моим требованиям.
Таким образом мы имеем следующую структуру проекта.
Вопрос разделения приложения на 2 части поднимался на официальном форуме Yii, почитать можно тут.
Кроме такого вот разделения приложения на две части, для каждой из них я сделал свой базовый контроллер, таким образом все контроллеры клиентской части наследуются от YFrontMainController, а контроллеры админской части от YBackMainController. Введение новых базовых контроллеров позволяет:
- реализовать функционал, специфичный для каждой части приложения, в одном месте, что облегчает повторное использование и сопровождение;
- как правило, для клиентской и адмиской частей используются разные лайауты (layouts), разделение контроллеров позволяет реализовать это очень просто (для этого достаточно переопределить свойство layout);
Например, для всех контроллеров админки, я применяю фильтр, проверяющий авторизацию пользователя, не имея базового контроллера, мне бы пришлось прописывать его во всех контроллерах админки. Так же применяется xss-фильтр, для всех данных, отправляемых из панели администрирования.
Скорее всего, выбранное мной решение, не является идеальным и имеет скрытые (пока!) от меня недостатки, если Вы о таковых знаете — прошу высказываться в комментариях.
Удачного yii-кодинга, друзья!
Основной сайт Юпи! — http://yupe.ru
Исходный код — https://github.com/yupe/yupe
Присоединяйтесь!
