CakePHP - путаница файловой структуры - разные контроллеры или все в одном? - PullRequest
0 голосов
/ 29 марта 2011

Чтобы понять мою путаницу / вопрос, позвольте мне сначала дать краткий обзор сайта, который я создаю: у сайта есть домашняя страница и 7 страниц категорий, каждая с одинаковым / похожим макетом.

На большинстве домашних страниц категории (например, «Обед») вы можете выполнить поиск (например, поиск ресторанов), который приведет вас на страницу результатов. Это будет иметь ту же / подобную компоновку, что и ... страница результатов поиска "Театры" ... и т. Д. И т. Д.

Итак, хотя разделов много, макетов страниц не так много.

Вопрос: я не уверен, стоит ли мне создавать отдельные контроллеры для каждого и использовать для них один и тот же CSS? Или, если я могу использовать один и тот же файл представления, но заполнить каждую область содержимого на странице по-разному в зависимости от URL / action..etc?

Все они будут ссылаться на разные & несколько таблиц в базе данных - например, рестораны будут ссылаться на таблицу ресторанов, таблицу кухонь, таблицу zip_codes ... и т. Д. Театры могут ссылаться на таблицу "фильмы", таблицу zip_codes ... и т. Д. И т. Д.

Но - я также хочу инструмент администратора для некоторых - то есть "рестораны / редактировать" или "театры / редактировать" ... и т. Д. - не ВСЕ страницы будут иметь администратора для этого конкретного URL - то есть "на открытом воздухе" может быть просто "business / edit" или что-то общее ... Я не знаю - я запутался, как вы можете сказать.

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

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Вы можете ответить на это самостоятельно.Предположим, вы реализуете отдельные контроллеры, модели и представления для каждого, как они отличаются?Если они отличаются только именами таблиц и метками / строками, которые они используют, то вы можете использовать только один универсальный контроллер.Но если они отличаются другими способами (например, модель ресторанов имеет совершенно другую структуру отношений, чем модель Movie), тогда используйте отдельные контроллеры.

Чтобы предотвратить слишком много повторений между контроллерами и просматривать файлы, когда вы используетеотдельные контроллеры, попробуйте добавить функциональность в общий базовый контроллер (например, AppController, создать собственный базовый контроллер на основе AppController, из которого будут получены ваши MoviesController и RestaurantsController и т. д.).Вставьте универсальный код представления в элементы.

Несколько слов о CSS: Конечно, вы можете (и должны) использовать это повторно.Это в основном отдельно от зрения.Просто используйте разумные имена классов и идентификаторы в ваших представлениях, и CSS будет легко использовать повторно.

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

0 голосов
/ 29 марта 2011

-группировать элементы, которые будут совместно использоваться всеми сайтами в макете (то есть site css, библиотека js сайта common) - создайте представление для каждой из вашей категории (страницы) (т. е. обеденная страница, театральная страница, страница ресторана) и поместите туда только содержимое страницы (т. е. Theatre JS, Theatre включает) там - теоретически, у каждого vew должны быть контроллер и модель, поэтому вы должны разделить их.

В любом случае, URL, например, «restaurant / edit» или «theatres / edit», фактически означает модель «restaurant», операция «edit» в вашем файле контроллера.

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

...