Торт php архитектура - PullRequest
       10

Торт php архитектура

1 голос
/ 19 августа 2011

У меня вопрос к CakePHP по поводу его архитектуры.

У меня есть приложение, которое будет иметь только две модели (товары и категории).

Я должен сделать браузер онлайн-продукта. Для меня не имеет смысла иметь один контроллер «Продукты» и один контроллер «Категории», потому что у меня будет 20+ действий над Продуктами и ни одного в категориях.

У меня есть несколько ключевых функций, могу ли я иметь один контроллер для каждой из этих функций? например Один контроллер «Поиск», в котором есть действия «SearchResult», «AdvancedSearch», «BasicSearch».

Мы будем несколькими разработчиками в этом проекте, и я не хочу, чтобы нас все постоянно блокировали, потому что кто-то редактирует контроллер продукта (и мне действительно не нравится файл с 1000+ строками кода).

Второй вопрос: Какой механизм я должен использовать, чтобы фрагментировать представление в нескольких разных подвидах? Например. Для просмотра подробной информации об одном продукте у меня есть много вещей, которые нужно отобразить: раздел изображений, раздел описания, аналогичные продукты, обзор, ... Возможно ли иметь подпункт?

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 19 августа 2011

Для «подвидов» посмотрите на элементы, которые только что.Это фрагменты кода представления, которые могут быть включены в другие представления.Правильное структурирование элементов может создать некоторые очень элегантные отношения представления / подпредставления.http://book.cakephp.org/view/1081/Elements

Что касается проблемы с вашим контроллером, то я тоже столкнулся с ней.Из того, что я вижу, похоже, что вы неправильно классифицируете свои действия.Подумайте об альтернативных таксономиях для действий, которые вы делаете (отличный пример - объединение всех функций поиска в контроллер).

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

Одна вещь, в которой я допустил ошибку, это выбор моих контроллеров на основе pages у меня будет, а не на моделях .Подумайте о ваших данных (моделях) и действиях, которые можно над ними выполнить (действиях в контроллере), ТОГДА подумайте о ваших представлениях.

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

CakePHP - путаница в структуре файла - разные контроллеры или все в одном?

для более подробного обсуждения темы.

Надеюсь, это поможет!

1 голос
/ 19 августа 2011

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

По поводу поиска; Ваши основные функции поиска должны находиться в модели Products с различными контроллерами, вызывающими соответствующие методы. Базовый или расширенный поиск по одной модели в большинстве случаев может быть обработан одним методом, это, конечно, вопрос только в нескольких полях поиска?

Если у вас есть несколько разработчиков и вы беспокоитесь о конфликтах в одном и том же файле, вам действительно нужно учитывать управление версиями, например GIT или SVN , а не подходы, противоречащие ядру фреймворков MVC методология. В будущем у вас будет намного меньше проблем.

Я полагаю, что ваш вопрос, касающийся «подвидов», решается с помощью элементов , которые фактически являются многократно используемыми разделами представлений.

удачи

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