Решил немного видоизменить свою систему, а именно - разбить на модули.
Соответственно возник ряд вопросов.
Касательно ссылок и маршрутов. Если я правильно понял теперь в конфиге, в urlManager значение /backend/portlets/notes будет обращаться в модулю backend контроллеру portlets и к notesAction?
Файл BackendModule.php создавшийся в корне папки с модулем. Что сюда вообще стоит писать?
Вьюхи - сначало он ищет шаблон в папке modules/backend/views и если там нет - идет в themes? Или как?
Стоит ли разбивать систему на модули? админка и форум - без вопросов. А вот скажем новости вынести в отдельный модуль? На сколько это грамотно?
И маленький ворпос на последок. Можно как-то по другому в контроллере указывать actions? а то с модулем получается очень длинный путь (application.modules.backend.controllers.portlets.NotesAction)
и вопрос не относящийся к модулям. Как настроить правила ссылок чтобы не прописывать туда весь мусор? То есть если есть контроллер TestController и у него скажем 3 actions - act1, act2, act3.
Вот чтобы не прописывать 3 правила (/test/act1 => /test/act1 и т.д.)
а скажем /test/* => /test/*
Забыл добавить, это все при условии что есть вот такое правило
Я с модулями еще не работал, они появились позже чем я нача роект и времени переделывать с ними пока нет. Поэтому могу ответить на вопросы 3-7:
Вообще без модулей искал сначала в папке темы, думаю теперь бует так же, но с поправкой на модуль. Не уверен, спроси на общем форуме
Стоит одноначно. Увелививаетс переносимость. Соответсвует принципу LowCouling, ну и вообще именно для этого модули и делались
Вероятнее всего, нельзя… Разве что ввести свойство protected $actPath='application.modules.backed.actions' и указывать через него… Чтобы точно узнать - на общий форум.
Так нельзя. Только каждое действие или использую mod_rewrite. А какая разница, с правилом или без?
Такс, вобщем разобрался со всеми вопросами отвечаю на них сам))
Так и есть
Так и не понял, но похоже по аналогии с файлом контроллера
Сначала в модуле ищет, потом в теме
Если совсем все разносить по модулям - будет ли работать defaultController в конфиге при указании модуль.контроллер
Перекопал все - вариантов нету
пошел другим путем - наткнулся на похожую тему на общем форуме. Создал основное приложение, и приложение backend в рамках одного проекта… и забыл про проблему с чпу))
Нет, не будет. Надо указать дефолтный модуль, а в уонйиге моудуля - дефолтный контроллер Qiang так говорил в какой-то теме, точно не помнб где видел
А какая разница? Я чет не догоню как сделано. Про создание двух приложений в рамках одного я знаю, обсуждали тут на форуме неделю-две назад. А какэто на ЧПУ влияет?
Ну как это как влияет)) прямо и влияет)) в первом (основном приложении) ссылки второго не будут же пересекатся))
соответственно ссылки типа /test/act1 не будут идти в ‘<category:[a-zA-Z0-9_-]+>’=>‘news/category’ если test язвляется другим приложением
я ща вообще рву волосы на голове)) т.к. появились модули и весь сайт можно сделать удобнее))) только переписывать много приходится
и так, вопрос до кучи когда делаешь registerScriptFile() можно как-то файл вставлять в то место где вызывалось? мне просто не нужно ни в конец, ни в хидер… а четко где вызывается функция
6. пошел другим путем - наткнулся на похожую тему на общем форуме. Создал основное приложение, и приложение backend в рамках одного проекта.. и забыл про проблему с чпу))
Конечно реализация всех этих методов имеет смысл если только использующая их (модули) система\цмс имеет соответствующий интерфейс и "знает" какой метод где вызывать.
Кстати очень интересная тема…как организовать вот такой вот менеджер модулей в Yii (ну что-то типа как в вордпрессе)? Необходимо иметь возможность:
установить\удалить модуль
активировать\деактивировать модуль
модуль может иметь свои настройки доступные из админки и т.д.
Я спрашиваю это потому, что решил написать небольшую цмску\движок для блога на Yii, хотя до вопроса о расширении и модулях еще далеко - я задумываюсь об общей архитектуре уже сейчас…))))
Всем кто хочет присоединиться к разработке - велком на мой блог (см подпись)!
Всем кто хочет присоединиться к разработке - велком на мой блог (см подпись)!
Я сам пишу сейчас движок на Yii, не совсем блог конечно. Нечто похожее на nnm.ru
Quote
Кстати очень интересная тема...как организовать вот такой вот менеджер модулей в Yii (ну что-то типа как в вордпрессе)? Необходимо иметь возможность:
установить\удалить модуль
активировать\деактивировать модуль
модуль может иметь свои настройки доступные из админки и т.д.
Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.
Хотя я щас подумал… в wp установка происходит по протоколу ftp, и собственно ничего не мешает и в Yii это заюзать… такс… начну-ка я опять переписывать свое приложение ))
Quote
да я знаю....просто интересно как поступил в этом случае Digital God
На данный момент модели решил сделать разные. Поскольку разделяю админку и основную часть на два приложения - в моделях должны быть разные функции/правила. Можно конечно все запихать в одно, но согласись - на кой черт юзеру нужны функции админа, которые полюбак будут подгружаться вместе с моделью. Лишний код, лишний объем, лишнее время на обработку.
Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.
В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части…Может конечно есть еще какие то варианты.
А вот если фронт и бэк разделены просто на уровне каталогов с контроллерами (такой способ я выбрал, имхо, конечно) мне кажется можно поступить двумя способами:
Модули могут быть вложенные (получается что у модуля - будет модуль администрирования )
Можно сделать проще…в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части…(я больше склоняюсь к этому варианту)
Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.
В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части…Может конечно есть еще какие то варианты.
А вот если фронт и бэк разделены просто на уровне каталогов с контроллерами (такой способ я выбрал, имхо, конечно) мне кажется можно поступить двумя способами:
Модули могут быть вложенные (получается что у модуля - будет модуль администрирования )
Можно сделать проще…в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части…(я больше склоняюсь к этому варианту)
Ну вот я щас сделал простенький инсталятор модуля. Тут без разницы - разделены админка и сайт на 2 приложения или нет (если разделены, то просто лишняя команда на копирование файлов в другую папку).
Оказалось проще чем я думал)))
в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится
Ну вот я щас сделал простенький инсталятор модуля. Тут без разницы - разделены админка и сайт на 2 приложения или нет (если разделены, то просто лишняя команда на копирование файлов в другую папку).
Оказалось проще чем я думал)))
в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится
А как реализована установка модуля Т.е. модули же должны быть прописаны в конфиге