Для этого есть фронт контроллер. Почему я и пристаю с вопросом, что у вас делает контроллер шаблона? Не могу поверить, что у вас каждый сраный шаблонишко в НТТР лезет. Не его собачье дело, для него фронт-контроллер все уже НТТР разобрал.Модели недостаточно для получения данных - нужен контроллер, который будет посредником между НТТР запросом и моделью.
Вообще-то мой вопрос, чем занимается пресловутуй контролер шаблона.А чем занимается этот body.biz.php?
Согласен, натупил в формулировках. Виноват, сам загадил дискуссию.Для этого есть фронт контроллер.
Не контроллер шаблона. просто контроллер. Но поскольку (в случае вывода результата работы в хтмл) его задача - отработать бизнес-логику определённого блока, определять шаблон и выдать данные для него, он получается, де факто, контроллером шаблона.Вообще-то мой вопрос, чем занимается пресловутый контролер шаблона.
С какой стати контроллер решает какие данные запрашивать? Откуда он вообще может это знать? Модель знает какие данные генерить и делает это (при этом нет никакой узурпации функций контроллера). Затем она отдает эти данные контроллеру и говорит: "встретишь шаблон, передай ему".Дальше контроллер решает, какие данные запрашивать у модели, получает их, форматирует, и передаёт в шаблонизатор.
Нет, так не может быть.есть просто контролер, один на все шаблоны и весь фреймворк.
Не совсем понял... Предлагаю от абстракций перейти к более конкретной задаче. Так что если интересно, кидайте полноценную задачу со всеми смущающими вас моментами, я покажу решение.Именно в этом.
В зависимости от запрашиваемой страницы набор виджетов может меняться.
Собственно, вопрос именно в этом: где определяется логика выбора виджетов.
И так запутались в терминологии, зачем еще хранилище данных сюда притягивать? В MVC нет D, потому что это часть модели. А как она там абстрагирована, это не забота MVC. Однозначно, что не контролер, ни отображение к хранилищу данных прямого доступа не имеет.Я так очень долго работал, пока не понял смысл модели - абстрагировать работу с хранилищами данных.
Это ты упорно называешь мою модель контроллером и потом же обвиняешь. Модель это самая натуральная, в ней есть обращение к хранилищу данных, и она не знает вообще в какомконтексте к ней обращаются (контроллер бы знал).Твоя структура нормальная, только нежизнеспособная или - что скорее - у тебя вообще нету модели, а классическая схема, когда модели нет, а контроллер выполняет её функции.
Я так очень долго работал, пока не понял смысл модели - абстрагировать работу с хранилищами данных
И это говорит один из "пап" форума? Уверяю вас, вы не поняли что такое модель. Да и контроллер бизнес-логику не обрабатывает. Для этого есть модель.просто контроллер. Но поскольку (в случае вывода результата работы в хтмл) его задача - отработать бизнес-логику
Шаблоны != View. Шаблонов может в принципе не существовать.Шаблоны, они же вью
<div>
<? insert('block') ?>
</div>
Ничего, вон, игры по сотням кадров в секунду в буфере рисуют, а потом показывают. И ничего - не умерли до сих пор.Недостаток у активных шаблонов только один - начало рендеринга шаблона ДО того, как выполнится вся бизнес-логика. Со всеми вытекающими последствиями, такими невозможность повлиять на отображение уже отрисованных участков.
Я пока не услышал четкого объяснения причины, почему вся бизнес логика должна обязательно быть выполнена до начала отрисовки. Если не считать Title там, заголовков и всего прочего, решаемого достаточно просто. В какой-то мере этот тезис аналогичен требованию, чтобы все необходимые на странице данные были прочитаны из базы до начала работы модели (а то не дай бог у нас слой хранилища смешается со слоем бизнес логики).Недостаток у активных шаблонов только один - начало рендеринга шаблона ДО того, как выполнится вся бизнес-логика. Со всеми вытекающими последствиями, такими как невозможность повлиять на отображение уже отрисованных участков.
Это все-таки не совсем то. Множественная декларация в пассивных шаблонах гораздо суровее и беспощаднее.Двойное декларирование, с одной стороны, выглядит неэффективным, но, скажем, переменные для обычного шаблона мы тоже объявляем два раза - сначала присваиваем в контроллере, а потом обращаемся в шаблоне. И ничего - не умерли до сих пор.
int main(int argc, char **argv)
{
/* start here */
}
<? include('header.php') ?>
<!-- start here -->
<? include('footer.php') ?>