Yii Framework Forum: Несколько вопросов на счет модулей - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Несколько вопросов на счет модулей Rate Topic: -----

#1 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

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'
0

#2 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 March 2009 - 05:59 AM

Я с модулями еще не работал, они появились позже чем я нача роект и времени переделывать с ними пока нет. Поэтому могу ответить на вопросы 3-7:
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
0

#3 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 10 March 2009 - 07:16 AM

Такс, вобщем разобрался со всеми вопросами :) отвечаю на них сам))
1. Так и есть :)
2. Так и не понял, но похоже по аналогии с файлом контроллера
3. Сначала в модуле ищет, потом в теме
4. Если совсем все разносить по модулям - будет ли работать defaultController в конфиге при указании модуль.контроллер
5. Перекопал все - вариантов нету :(
6. пошел другим путем - наткнулся на похожую тему на общем форуме. Создал основное приложение, и приложение backend в рамках одного проекта.. и забыл про проблему с чпу))
0

#4 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 March 2009 - 07:21 AM

4. Нет, не будет. Надо указать дефолтный модуль, а в уонйиге моудуля - дефолтный контроллер Qiang так говорил в какой-то теме, точно не помнб где видел :)
6. А какая разница? Я чет не догоню как сделано. Про создание двух приложений в рамках одного я знаю, обсуждали тут на форуме неделю-две назад. А какэто на ЧПУ влияет? :)
0

#5 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 10 March 2009 - 08:16 AM

Ну как это как влияет)) прямо и влияет)) в первом (основном приложении) ссылки второго не будут же пересекатся))

соответственно ссылки типа /test/act1 не будут идти в '<category:[a-zA-Z0-9_\-]+>'=>'news/category'    если test язвляется другим приложением :)

я ща вообще рву волосы на голове)) т.к. появились модули и весь сайт можно сделать удобнее))) только переписывать много приходится

и так, вопрос до кучи :) когда делаешь registerScriptFile() можно как-то файл вставлять в то место где вызывалось? мне просто не нужно ни в конец, ни в хидер.. а четко где вызывается функция
0

#6 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 March 2009 - 08:57 AM

А, я решил аналогичный вопрос по-другому, я просто добавил букву "с" перед именем категории и все проблемы :)

Ну вообще да, зря они модули сразу не сделали, протупили конкретно :)

Нет, нельзя. Она же не выводит, а регистрирует для вывода.
0

#7 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 10 March 2009 - 09:11 AM

Quote

6. пошел другим путем - наткнулся на похожую тему на общем форуме. Создал основное приложение, и приложение backend в рамках одного проекта.. и забыл про проблему с чпу))


а модели у них (приложений) тоже разные будут???
0

#8 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 10 March 2009 - 09:33 AM

Quote

2. Файл BackendModule.php создавшийся в корне папки с модулем. Что сюда вообще стоит писать?


Сразу оговорюсь - сам модули пока не использовал, только немного успел подумать как их можно применить.
По моему в файле *Module.php можно реализовать такие методы:

- init - инициализация модуля
- install - вызывается при установке модуля (например пишет что-то в БД)
- uninstall - удаление модуля
- about - может вернуть массив типа:
  $about['author'] = 'you name';
  $about['version'] = '0.1';
  $about['description'] = 'мой супер модуль для....бла-бла-бла';
 
Конечно реализация всех этих методов имеет смысл если только использующая их (модули) система\цмс имеет соответствующий интерфейс и "знает" какой метод где вызывать.


Кстати очень интересная тема...как организовать вот такой вот менеджер модулей в Yii  (ну что-то типа как в вордпрессе)? Необходимо иметь возможность:
- установить\удалить модуль
- активировать\деактивировать модуль
- модуль может иметь свои настройки доступные из админки и т.д.

Я спрашиваю это потому, что решил написать небольшую цмску\движок для блога на Yii, хотя до вопроса о расширении и модулях еще далеко - я задумываюсь об общей архитектуре уже сейчас...)))) :)
Всем кто хочет присоединиться к разработке - велком на мой блог (см подпись)!

0

#9 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 10 March 2009 - 10:59 AM

Quote

а модели у них (приложений) тоже разные будут???

Ну мы ж уже обсуждали воз здесь: http://www.yiiframew...opic,924.0.html
0

#10 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 10 March 2009 - 01:25 PM

Quote

Quote

а модели у них (приложений) тоже разные будут???


Ну мы ж уже обсуждали воз здесь: http://www.yiiframew...opic,924.0.html

да я знаю....просто интересно как поступил в этом случае Digital God
0

#11 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 11 March 2009 - 01:33 AM

Quote

Всем кто хочет присоединиться к разработке - велком на мой блог (см подпись)!


Я сам пишу сейчас движок на Yii, не совсем блог конечно. Нечто похожее на nnm.ru

Quote

Кстати очень интересная тема...как организовать вот такой вот менеджер модулей в Yii  (ну что-то типа как в вордпрессе)? Необходимо иметь возможность:

- установить\удалить модуль

- активировать\деактивировать модуль

- модуль может иметь свои настройки доступные из админки и т.д.


Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.

Хотя я щас подумал... в wp установка происходит по протоколу ftp, и собственно ничего не мешает и в Yii это заюзать... такс... начну-ка я опять переписывать свое приложение :))))

Quote

да я знаю....просто интересно как поступил в этом случае Digital God


На данный момент модели решил сделать разные. Поскольку разделяю админку и основную часть на два приложения - в моделях должны быть разные функции/правила. Можно конечно все запихать в одно, но согласись - на кой черт юзеру нужны функции админа, которые полюбак будут подгружаться вместе с моделью. Лишний код, лишний объем, лишнее время на обработку.
0

#12 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 11 March 2009 - 02:46 AM

Quote

Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.

В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части....Может конечно есть еще какие то варианты.

А вот если фронт и бэк разделены просто на уровне каталогов с контроллерами (такой способ я выбрал, имхо, конечно) мне кажется можно поступить двумя способами:
1) Модули могут быть вложенные (получается что у модуля - будет модуль администрирования  :) :) :) )
2) Можно сделать проще...в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части.....(я больше склоняюсь к этому варианту)
0

#13 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 11 March 2009 - 03:15 AM

Quote

Quote

Отличная идея, но в моем случае есть одно НО. Поскольку у меня админка и основная часть сайта - два разных приложения - нужно модуль при установке как-то разделять на 2 части.


В твоем случае мне кажется нужно в рамках одного модуля для твоего движка (назовем его плагин) - делать 2 отдельных модуля - для админки и для паблик части....Может конечно есть еще какие то варианты.



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

1) Модули могут быть вложенные (получается что у модуля - будет модуль администрирования  :) :) :) )

2) Можно сделать проще...в рамках одного модуля создать два каталога для контроллеров (back и front) и использовать их соответственно в админке и публичной части.....(я больше склоняюсь к этому варианту)



Ну вот я щас сделал простенький инсталятор модуля. Тут без разницы - разделены админка и сайт на 2 приложения или нет :) (если разделены, то просто лишняя команда на копирование файлов в другую папку).

Оказалось проще чем я думал)))

в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится :)
0

#14 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 11 March 2009 - 03:41 AM

Quote

Ну вот я щас сделал простенький инсталятор модуля. Тут без разницы - разделены админка и сайт на 2 приложения или нет :) (если разделены, то просто лишняя команда на копирование файлов в другую папку).



Оказалось проще чем я думал)))



в файле модуля написал функции - install, update, checkModule. Туда же прописал sql на создание таблиц. Щас вот делаю копирование файлов по ftp, посмотрим что получится :)


А как реализована установка модуля??? Т.е. модули же должны быть прописаны в конфиге???
0

#15 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 11 March 2009 - 04:20 AM

Все просто, по крайней мере другого варианта я пока не придумал :)
ровно как доп. параметры в конфиг

'params'=>require(dirname(__FILE__).'/params.php'),

так и модули

'modules'=>require(dirname(__FILE__).'/modules.php'),


файлы генерятся при изменении конфига в админке. А сами конфиги лежат в базе.
Самая простая система хранения конфигов в базе. А при установке модуля - происходит запись в базу (дополняется таблица модулей и таблица настроек).
0

#16 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 12 March 2009 - 02:11 AM

Чето какая-то фигня получается с модуляцией админки :)
Сделал модуль News.. в нем контроллер... тоже News называется... в нем например actionList

ссылки получаются - /localhost/backend/news/news/list/

чето не катит совсем такое)))

можно как-то обращаться к actions без указания контроллера, если он дефолтовый?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users