несколько модулей в приложении CakePHP - PullRequest
3 голосов
/ 27 января 2012

Мне нужно подготовить три отдельных модуля в CakePHP.один админ, администратор отеля, гость.Эти три будут разными пользователями, имеющими один и тот же экран входа в систему, но внутренняя компоновка будет полностью разделена.

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

Ответы [ 2 ]

4 голосов
/ 27 января 2012

Вы можете создавать модули как «плагины», и тогда они будут иметь отдельные модели, представления и контроллеры. Маршрутизация по умолчанию для плагинов заключается в том, что к ним можно получить доступ через /plugin_name/controller_name/action. Плагины могут даже иметь собственные макеты и т. Д. Основное приложение в вашем случае сводится к аутентификации пользователей и проверке разрешений.

Подробнее:
1.3: http://book.cakephp.org/1.3/en/view/1111/Plugins
2.0: http://book.cakephp.org/2.0/en/plugins.html

Я бы использовал маршрутизацию, только если у трех модулей были в основном одинаковые контроллеры и модели.

1 голос
/ 27 января 2012

Объединение префиксной маршрутизации с несколькими макетами должно решить вашу проблему.Как отметил в комментариях Joep, действия в ваших контроллерах следуют простой схеме именования admin_index(), hotel_admin_index() and guest_index(), которая упрощает организацию вашего кода.

Вы можете использовать следующий код в вашем AppController для обработки переключения между макетами (то есть default.ctp, admin.ctp и hotel_admin.ctp).

function beforeRender() {
  if (isset($this->params['prefix']) { 
    if ($this->params['prefix'] == 'admin') {
      $this->layout = 'admin';
    } else if ($this->params['prefix'] == 'hotel_admin')
      $this->layout = 'hotel_admin';
    }
  }
}

Вы можете даже взять егошаг вперед и разделить все статические ресурсы (т.е. /img/admin/new-blah.png)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...