2009-11-25 3 views
1

Наш сайт будет работать следующим образом:CakePHP: повторное использование моделей, контроллеры, конфигурацию, но не мнения и маршруты

  • Там есть центральный сайт www.example.org, где каждый может зарегистрироваться, изменить информацию, управлять своими 'визитная карточка'.
  • Кроме того, у каждого будет имя компании.example.org. Здесь пользователи могут публиковать простой сайт на основе информации, которую они изменяют на главном сайте.

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

Возможно ли изменение маршрутов на основе имени домена. Будет ли это считаться «подходящим» для CakePHP. Вместо решения, которое «выполняет» работу, я бы предпочел найти наилучшую практику.

Спасибо!

+1

Вы будете динамически генерировать и записывать файлы '.ctp' для каждого нового пользователя или это может быть просто база данных + шаблон? – deceze

+0

база данных + шаблон на основе – Evert

+1

Тогда я не совсем уверен, где проблема. :-) Насколько я понимаю, все это в одном приложении, не так ли? Единственная проблема заключалась бы в том, как отправлять запросы на 'company.example.com' через ваше приложение Cake на' example.com', что должно быть выполнено с правильно настроенным сервером и, возможно, с маской .htaccess. Или мне что-то не хватает в вашем вопросе? – deceze

ответ

1

Off верхней части моей головы, механизм маршрутизации в CakePHP не имеет ни малейшего понятия о доменах, так что вы могли бы теоретически сделать карту маршрута, например/company1/пост/1 к company1.example. com/post/1 using Apache rewrite

Prefixing in routes возможно, поскольку я использовал его раньше, чтобы создать многоязычный сайт eg/en/blog,/es/blog и т. д., поэтому это будет просто префикс названия компании в пути.

1

То, что вы ищете, это themes.

CakePHP 1.3 имеет neat implementation, но 1.2 работает почти так же хорошо.

В вашем AppController, вы хотите добавить что-то вдоль этих линий, чтобы загрузить другую тему, основанную на хосте:

$mapThemes = array('company.example.com' => 'theme-1', 'store.example.com' => 'theme-shopping'); 
$this->theme = $mapThemes[env('SERVER_NAME')]; 

Конечно, возможности безграничны. Вы можете загрузить $mapThemes из базы данных, разрешив каждому пользователю задавать несколько тем и т. Д. Но это общая идея, и я считаю, что это торт.

 Смежные вопросы

  • Нет связанных вопросов^_^