Несколько вопросов на счет модулей
#1
Posted 10 March 2009 - 03:38 AM
Соответственно возник ряд вопросов.
1. Касательно ссылок и маршрутов. Если я правильно понял теперь в конфиге, в urlManager значение /backend/portlets/notes будет обращаться в модулю backend контроллеру portlets и к notesAction?
2. Файл BackendModule.php создавшийся в корне папки с модулем. Что сюда вообще стоит писать?
3. Вьюхи - сначало он ищет шаблон в папке modules/backend/views и если там нет - идет в themes? Или как?
4. Стоит ли разбивать систему на модули? админка и форум - без вопросов. А вот скажем новости вынести в отдельный модуль? На сколько это грамотно?
5. И маленький ворпос на последок. Можно как-то по другому в контроллере указывать actions? а то с модулем получается очень длинный путь (application.modules.backend.controllers.portlets.NotesAction)
6. и вопрос не относящийся к модулям. Как настроить правила ссылок чтобы не прописывать туда весь мусор? То есть если есть контроллер TestController и у него скажем 3 actions - act1, act2, act3.
Вот чтобы не прописывать 3 правила (/test/act1 => /test/act1 и т.д.)
а скажем /test/* => /test/*
Забыл добавить, это все при условии что есть вот такое правило
'<category:[a-zA-Z0-9_\-]+>'=>'news/category'
#2
Posted 10 March 2009 - 05:59 AM
3. Вообще без модулей искал сначала в папке темы, думаю теперь бует так же, но с поправкой на модуль. Не уверен, спроси на общем форуме
4. Стоит одноначно. Увелививаетс переносимость. Соответсвует принципу LowCouling, ну и вообще именно для этого модули и делались
5. Вероятнее всего, нельзя... Разве что ввести свойство protected $actPath='application.modules.backed.actions' и указывать через него... Чтобы точно узнать - на общий форум.
6. Так нельзя. Только каждое действие или использую mod_rewrite. А какая разница, с правилом или без?
Ну а обычный путь site.com/moduleID/contrllerID/actionID/param/value/param2/value2/ делается вообще без правил - только настройки CUrlManager: http://www.yiiframew...uide/topics.url
#3
Posted 10 March 2009 - 07:16 AM
1. Так и есть
2. Так и не понял, но похоже по аналогии с файлом контроллера
3. Сначала в модуле ищет, потом в теме
4. Если совсем все разносить по модулям - будет ли работать defaultController в конфиге при указании модуль.контроллер
5. Перекопал все - вариантов нету
6. пошел другим путем - наткнулся на похожую тему на общем форуме. Создал основное приложение, и приложение backend в рамках одного проекта.. и забыл про проблему с чпу))
#4
Posted 10 March 2009 - 07:21 AM
6. А какая разница? Я чет не догоню как сделано. Про создание двух приложений в рамках одного я знаю, обсуждали тут на форуме неделю-две назад. А какэто на ЧПУ влияет?
#5
Posted 10 March 2009 - 08:16 AM
соответственно ссылки типа /test/act1 не будут идти в '<category:[a-zA-Z0-9_\-]+>'=>'news/category' если test язвляется другим приложением
я ща вообще рву волосы на голове)) т.к. появились модули и весь сайт можно сделать удобнее))) только переписывать много приходится
и так, вопрос до кучи
#6
Posted 10 March 2009 - 08:57 AM
Ну вообще да, зря они модули сразу не сделали, протупили конкретно
Нет, нельзя. Она же не выводит, а регистрирует для вывода.
#7
Posted 10 March 2009 - 09:11 AM
Quote
а модели у них (приложений) тоже разные будут
#8
Posted 10 March 2009 - 09:33 AM
Quote
Сразу оговорюсь - сам модули пока не использовал, только немного успел подумать как их можно применить.
По моему в файле *Module.php можно реализовать такие методы:
- init - инициализация модуля
- install - вызывается при установке модуля (например пишет что-то в БД)
- uninstall - удаление модуля
- about - может вернуть массив типа:
$about['author'] = 'you name';
$about['version'] = '0.1';
$about['description'] = 'мой супер модуль для....бла-бла-бла';
Конечно реализация всех этих методов имеет смысл если только использующая их (модули) система\цмс имеет соответствующий интерфейс и "знает" какой метод где вызывать.
Кстати очень интересная тема...как организовать вот такой вот менеджер модулей в Yii (ну что-то типа как в вордпрессе)? Необходимо иметь возможность:
- установить\удалить модуль
- активировать\деактивировать модуль
- модуль может иметь свои настройки доступные из админки и т.д.
Я спрашиваю это потому, что решил написать небольшую цмску\движок для блога на Yii, хотя до вопроса о расширении и модулях еще далеко - я задумываюсь об общей архитектуре уже сейчас...))))
Всем кто хочет присоединиться к разработке - велком на мой блог (см подпись)!
#9
Posted 10 March 2009 - 10:59 AM
Quote
Ну мы ж уже обсуждали воз здесь: http://www.yiiframew...opic,924.0.html
#10
Posted 10 March 2009 - 01:25 PM
Quote
Quote
Ну мы ж уже обсуждали воз здесь: http://www.yiiframew...opic,924.0.html
да я знаю....просто интересно как поступил в этом случае Digital God
#11
Posted 11 March 2009 - 01:33 AM
Quote
Я сам пишу сейчас движок на Yii, не совсем блог конечно. Нечто похожее на nnm.ru
Quote
- установить\удалить модуль
- активировать\деактивировать модуль
- модуль может иметь свои настройки доступные из админки и т.д.
Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.
Хотя я щас подумал... в wp установка происходит по протоколу ftp, и собственно ничего не мешает и в Yii это заюзать... такс... начну-ка я опять переписывать свое приложение
Quote
На данный момент модели решил сделать разные. Поскольку разделяю админку и основную часть на два приложения - в моделях должны быть разные функции/правила. Можно конечно все запихать в одно, но согласись - на кой черт юзеру нужны функции админа, которые полюбак будут подгружаться вместе с моделью. Лишний код, лишний объем, лишнее время на обработку.
#12
Posted 11 March 2009 - 02:46 AM
Quote
В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части....Может конечно есть еще какие то варианты.
А вот если фронт и бэк разделены просто на уровне каталогов с контроллерами (такой способ я выбрал, имхо, конечно) мне кажется можно поступить двумя способами:
1) Модули могут быть вложенные (получается что у модуля - будет модуль администрирования
2) Можно сделать проще...в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части.....(я больше склоняюсь к этому варианту)
#13
Posted 11 March 2009 - 03:15 AM
Quote
Quote
В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части....Может конечно есть еще какие то варианты.
А вот если фронт и бэк разделены просто на уровне каталогов с контроллерами (такой способ я выбрал, имхо, конечно) мне кажется можно поступить двумя способами:
1) Модули могут быть вложенные (получается что у модуля - будет модуль администрирования
2) Можно сделать проще...в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части.....(я больше склоняюсь к этому варианту)
Ну вот я щас сделал простенький инсталятор модуля. Тут без разницы - разделены админка и сайт на 2 приложения или нет
Оказалось проще чем я думал)))
в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится
#14
Posted 11 March 2009 - 03:41 AM
Quote
Оказалось проще чем я думал)))
в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится
А как реализована установка модуля
#15
Posted 11 March 2009 - 04:20 AM
ровно как доп. параметры в конфиг
'params'=>require(dirname(__FILE__).'/params.php'),
так и модули
'modules'=>require(dirname(__FILE__).'/modules.php'),
файлы генерятся при изменении конфига в админке. А сами конфиги лежат в базе.
Самая простая система хранения конфигов в базе. А при установке модуля - происходит запись в базу (дополняется таблица модулей и таблица настроек).
#16
Posted 12 March 2009 - 02:11 AM
Сделал модуль News.. в нем контроллер... тоже News называется... в нем например actionList
ссылки получаются - /localhost/backend/news/news/list/
чето не катит совсем такое)))
можно как-то обращаться к actions без указания контроллера, если он дефолтовый?

Help













