Информация из локальной БД и внешнего источника в одном представлении - PullRequest
0 голосов
/ 02 октября 2011

Положение:
Упрощенная ситуация такова: рассмотрите блог, который построен как проект MVC. Пример блога YII хорош для этого, но вопрос не является специфичным для фреймворка: он не является чем-то особенным; у вас есть таблица с сообщениями и страница сборки из:

  • модель (YII даст вам базовую настройку активной записи)
  • контроллер, который, например, создает индекс (список всех сообщений)
  • представление (или несколько представлений), которое в итоге создает фактический HTML.

Теперь у меня есть рабочий блог, но у меня также есть внешний источник информации, который я хочу представить на этой же странице: например, RSS-лента.

Как добавить этот новый источник данных?

Возможные растворы
Чтобы уточнить, с чем я борюсь, вот несколько вещей, которые я рассматриваю

  • Создать новую модель, которая получает информацию из обоих источников.
    • По ощущениям как путь наименьшего сопротивления / работы
    • Нужно отсортировать посты блогов и RSS по дате
    • Может потребоваться установить какой-то флаг о том, что это за элемент (у элемента RSS может не быть автора, но у него есть источник).
    • Тот факт, что над флагом ощущается необходимость, заставляет меня поверить, что это должны быть две модели.
  • Создание новой модели для RSS и создание контроллера, который объединяет два источника и передает его в представление, способное обрабатывать оба типа сообщений
  • Что-то более сложное (возможно, более специфичное для фреймворка), но текущий вид поста - это всего лишь один вид для одного поста, и он повторяется. Вместо одного представления, которое обрабатывает оба типа, вам может потребоваться не только модель, но также представление для вашего RSS и контроллер (?), Который выполняет все микширование и сопоставление?

Рамочные примечания:
Я использую YII, но это не совсем о YII. Конечно, если что-то сложное должно быть сделано, мне придется реализовать это в YII, но речь идет о дизайне и шаблоне MVC, а не о том, где поставить ;; D

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

у вас может быть что-то подобное (я тоже использую yii, поэтому следующий код следует структуре yii)

class XyzController extends CController
{
.
.
.
    public function actionAbc()
    {
        .
                .
                .
        $this->render('viewname',array(
            'model1'=>$model1,//for posts frm table
                        'model2'=>$model2 //for rss feed

        ));
    }
}

для лучшего понимания попробуйте отобразить два отдельных представления для каждого типа поста в родительском представлении "viewname"

0 голосов
/ 04 октября 2011

Если бы мне пришлось это сделать, я бы сделал новый контроллер для представления и использовал бы две модели.

  • Я очень новичок в шаблоне mvc, однако из того, что я собрал до сих пор, я чувствую, что любая модель должна ограничивать себя только одним источником данных .Также в дополнение к операциям CRUD в эту модель должна быть включена «бизнес-логика» (если таковая имеется).Бизнес-логика здесь будет означать логику, которая применяется к источнику данных, относящемуся к веб-приложению, то есть к тем вещам, которые вы упомянули, например, сортировка RSS по дате.

  • Создайте контроллер, который обращается к этим двум моделям, чтобы заполнить ваши представления.

  • Наконец, наилучший способ организации этих компонентов / модулей / частей mvc по отношению к Yii зависит от требований вашего приложения и ux.

Теперь, я думаю, вы должны задать этот вопрос также на сайте programmers .Надеюсь это поможет!Изменить: Не слишком уверен, где поставить сортировку, контроллер или представление.

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