Наследование модуля Yii от родительского модуля

У меня есть сайт на Yii 1 с 3 модулями:

  • администратор
  • site1
    • site2

Модуль site2 является родительским модулем site1. И эти два модуля очень похожи (есть несколько одинаковых контроллеров).

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

Каковы наилучшие методы для этого?


person Szántó Zoltán    schedule 11.07.2014    source источник


Ответы (1)


Это может иметь много решений. Вот кое-что, с чего вы можете начать:

  1. У вас может быть какое-то общее место, где вы будете хранить общий код. В этом случае мы можем назвать этот каталог «общим». Затем в этом «общем» каталоге вы можете организовать свой общий код на основе функциональности — поведения, моделей, компонентов, действий, виджетов, событий и даже представлений (но я не слишком люблю делиться представлениями, если вам нужно одно представление на более места обычно хорошо сделать для него виджет). Вы можете импортировать это из конфигурации приложения.
  2. Обычно это намного чище и настраивается, если вы разбиваете свои контроллеры на классы действий, а затем делитесь этими действиями между контроллерами, присоединяя их к контроллеру (хорошим примером этого является действие Catpcha в приложении yii по умолчанию). Таким образом, вы можете исключить действия в некоторых контроллерах, если они вам не нужны, или смешать другой набор действий, если вам это нужно.
  3. Что касается файлов общего представления, даже вы можете сделать это, указав полный путь к файлу просмотра из любого места, я гораздо больше предпочитаю использовать виджеты, если нужно вызывать одно представление из нескольких контроллеров. Если вы вызываете одно представление в нескольких местах с одного контроллера, вы можете использовать renderPartial(), а затем включать свое представление в другое представление, но если вам нужно вызывать его из большего количества контроллеров, чем из организации и функционального представления, гораздо лучше использовать виджет.
person zmilan    schedule 12.07.2014