Рекомендации CakePHP по настройке основного приложения с несколькими вложенными приложениями - PullRequest
2 голосов
/ 13 июля 2011

Мне нужно создать такой веб-сайт:

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

Звучит не слишком сложно, верно?Теперь я так думаю (что, очевидно, я не уверен, что это лучший способ, поэтому я прошу совета):

  • Одно приложение CakePHP с глобальной системой аутентификации (используя Auth)
  • Каждый мини-сайт будет представлять собой отдельную страницу сайта со своим собственным контроллером и представлениями (и моделью, если необходимо).
  • Таким образом, будет www.mysite.com./ mini-site1, www.mysite.com/mini-site2 и т. д.

Мои основные опасения по поводу этой системы: 2:

  • Что если число минисайтов много растет?Было бы много контроллеров, просмотр папок, моделей и кто знает, если макеты, элементы и т. Д ... Может быть, не лучшая организация
  • Что если мини-сайты станут более сложными?Больше таблиц, контроллеров, сценариев, CSS ...

Возможно, я слишком волнуюсь, и мои проблемы не являются такой проблемой, но я хотел бы знать, есть ли у кого-нибудь какие-либо советы для альтернативыконфигурации.Например, наличие одной главной страницы (приложения cakephp), которая будет домашней страницей, и каждого мини-сайта, являющегося вспомогательным приложением (также в cakephp), доступ которого будет контролироваться основным приложением.Таким образом, это было бы намного более организованным, с каждым мини-сайтом в отдельной папке с его собственными контроллерами, представлениями, моделями или чем-то еще, и это было бы настолько сложно, насколько требовалось.Я даже не знаю, возможно ли это, или как будет выглядеть конфигурация сервера и папок.У меня есть некоторый опыт работы с CakePHP, но не так много.

Любые идеи / советы будут высоко оценены!

Ответы [ 2 ]

1 голос
/ 14 июля 2011

У меня есть несколько приложений CakePHP, и я предпочитаю иметь приложение для каждого сайта и делиться источником торта.Плагины аккуратны как способ создания функций и многократного использования.Они поддерживают основную базу кода легким, и я согласен, что это помогает.Они не помогут вам настроить маршрутизацию или конфигурации приложения.

Когда я впервые исследовал это для своего проекта, я исследовал использование плагинов в качестве опции, но увидел отсутствие стандартного контроля над конфигурациями ядра и маршрутизацией какболевая точка.Доступ к базе данных или любому источнику данных в этой среде может стать утомительным, если у вас есть несколько сайтов.Особенно, если каждый сайт имеет свои собственные источники данных, маршруты и конфигурации.

То, как я видел это, любое отклонение от «пути CakePHP» не было идеальным, насколько сложно было запускать несколько сайтов из одного кода приложения.база?

Испытания

  1. Все ваши маршруты одинаковы, или для некоторых сайтов нужны другие правила.
  2. Является ли ваша функциональность одинаковой для всех сайтов или есть некоторые различия, которые могут заставить вас взломать ваш основной код.

Представьте себе это в любой конфигурации или app_controller.php

if($domain == 'first.example.com'):
#This is the first time I override this value, is it the last?
endif;

Без конца на сайте я обнаружил, что мое время разработки тратится на поиск умных способов абстрагирования этого.Не основной функциональности, которую я жаждал.

Чтобы предотвратить общеизвестное гнездо птиц, я решил создать один каталог приложений для каждого сайта.Основная причина, по которой я так поступил, состояла в том, чтобы предотвратить развитие описанного выше беспорядка в базе кода.Я запускаю несколько источников приложений, но используя bash-скрипт и контроль версий, это простая работа по сравнению со временем, которое требуется, чтобы придумать умный способ абстрагировать все это в одном приложении.

Почему

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

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

Если вы решили пойти по пути, чтобы иметь 1 приложение для каждого сайта.Это похоже на структуру моей папки

/var/www/cakehost/first.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/second.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/third.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/src/cake

После того, как вы решили экспортировать 1 приложение для каждого сайта, вы просто используете файл bootstrap.php так, как это было задумано.

Я используюСкрипт для экспорта шаблонного "приложения" из моего контроля версий.Приложение работает во всех средах без хаков.Любые отклонения происходят из файла bootstrap.php.Чтобы упростить это, вы можете создать единый каталог плагинов и символическую ссылку на него со всех сайтов.

/var/www/cakehost/plugins/ #Symlink source for each app.

Даже если это кажется ненужным дублированием, мой код остается аккуратным, а тестирование - очень простым.Я пытался использовать 1 приложение для всего с плагинами, это было не совсем правильно.

1 голос
/ 13 июля 2011

Если вы действительно строите несколько приложений, то торт имеет встроенную архитектуру «плагинов», которая позволяет вам создавать автономные приложения внутри структуры плагинов, которая находится на верхнем уровне основного приложения.

У нас есть один, который мы разработали здесь на работе, который имеет уровень основного приложения, который управляет всеми пользовательскими данными, аутентификацией, ACL и имеет некоторые служебные функции, которые используются во всех приложениях, включая уведомления.

Затем у нас есть плагины, как их называет торт, такие как Ticketing, Файловый ресурс и CMS. Каждый из них похож на приложения Cake со своими собственными представлениями, контроллерами и моделями и находится в каталоге в каталоге apps => plugins.

Это работает хорошо, но требует значительного планирования, чтобы убедиться, что вы не создаете ненужные приложения или птичье гнездо зашитого кода.

Подробнее о плагинах здесь: http://book.cakephp.org/view/1111/Plugins

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