Извините за заголовок вопроса, но я не смог найти более подходящий способ сформулировать это.
В настоящее время я создаю веб-сайт на платформе CakePHP, и я не совсем уверен, как решить следующую проблему. Сайт выглядит примерно так:
.
Затененные области являются частью макета, поскольку их содержимое не меняется между представлениями. В боковой панели у меня есть коллекция объявлений, которые связаны с несколькими моделями. Мне нужна логика контроллера, чтобы определить картинку, связанную с рекламой. Кроме того, список объявлений должен быть динамичным. Где я должен поставить логику для построения боковой панели?
Я думал о:
- помещение логики в
AppController
(beforeFilter
/ afterFilter
) - проблема в том, что я не могу использовать необходимую логику контроллера (другие контроллеры наследуются от AppController
, я не уверен, как использовать их там).
- создание компонента - можно ли создавать компоненты, основанные на контроллерах?
- тиражирование кода боковой панели во всех контроллерах, которые отображают представления - мне это кажется глупым.
Что такое Способ Торта для этого?
Обновление
После некоторого чтения и экспериментов я приступил к рефакторингу большинства из них.
Я добился наилучшей производительности, переместив логику построения моих объявлений в модели (исключив компонент, который извлекал изображения) и не использовав requestAction
. Это почти в три раза быстрее, а код выглядит намного лучше.