Ограничение MVC или CodeIgniter: как я могу получить доступ к «подчиненному» контроллеру? - PullRequest
2 голосов
/ 18 июля 2011

Я не знаю, ошибаюсь ли я.Но все, что я знаю, это то, что в MVC контроллеры всегда отвечают за вычисление данных, а представление - за их печать.

Проблема

У меня естьОпрос, что мне нужно использовать модель, чтобы получить ваши данные, и я использую вид для печати.В настоящее время я могу получить доступ к этому опросу, используя URL "poll / last".Это отлично работает.

Моя проблема в том, что мне нужно напечатать эту информацию на некоторых страницах (как в контроллере "site").

Дилемма

  • Если я просто загрузлю представление опроса на странице, данные не получатся из модели.Однажды, что это работа контроллера.
  • Если я переместу все части контроллера для просмотра, это работает нормально.Низкая точка - это превращение приложения в «не-MVC-совместимое».

Решение

Итак, как я могу решить эту дилемму?На самом деле CodeIgniter не является HMVC, а модуль HMVC не работает нормально - только локально.

Есть какое-нибудь жизнеспособное решение для решения этой проблемы?

Ответы [ 3 ]

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

Контроллеры не всегда отвечают за все расчеты. Когда эти расчеты являются частью «модели бизнеса или данных», они должны войти в модель. Мой английский иногда не очень хорош, но я попытаюсь объяснить на примере: допустим, у нас есть таблица с данными о людях и столбец birth_date. Функция age () должна быть в Model, потому что это другой способ определения даты рождения.

В вашем случае я бы попытался переместить calc в модель и написать частичное, которое показывает результат, и передать полученное частичное представление основному. Что-то вроде

$data['poll_view'] = $this->load->view('poll_partial',$this->poll_model->getPollData(),true);
$this->load->view('current_view', $data ); //that includes poll subview
0 голосов
/ 18 июля 2011

Звучит так, как будто вы пытаетесь загрузить вид опроса в другие виды?Если это так, посмотрите здесь: http://codeigniter.com/forums/viewthread/189935/

На тот же вопрос был задан / ответил

Простите, если это был не ваш вопрос ... не могу комментировать сообщения...

0 голосов
/ 18 июля 2011

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

Вы хотите использовать данные, которые есть в опросе / последнем контроллере, в другом?

Почему бы не иметь тот же код, который вы делаете на контроллере, в методе / функции в модели?

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

Это основная функция моделей.

По-моему, это выглядит так:

Просмотр - Отображает данные, форматирует данные и помещает данные в нужное место. Контроллер - берет данные и определяет, что именно показывать и по какому URL / местоположению показывать, и в каком виде. Модель - Получает данные из базы данных, выполняет любые необходимые вам вычисления и возвращает их.

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

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