бред полнейший. HMVC в том то и заключается его прелесть что это форвардинг именно запросов. Так что вы по сути приравняли виджет(что вы там понимаете) к системе форвардинга запросов и многослойной архитектуреПринцип такой же как в HMVC. Т.е. по сути тот же модуль, только диспетчеризация внешних запросов запрещена.
Я не вижу никакой необходимости во внедрении новых концептуальных сущностей. Виджетов на страницах сайта у меня десятки, и с задачей их отображения прекрасно справляются обычные экшены модулей + вью. Ради одного меню городить сущность "виджеты" не вижу смысла.лучше внедрить некую концептуальную сущность под названием "виджет"
К сожалению, вопрос был именно в этом.Где и как его вызвать - дело второе.
Прелесть HMVC далеко не форвардинге запросов, а сути самого HMVC. Форвардинг это просто просто технология, не более.HMVC в том то и заключается его прелесть что это форвардинг именно запросов
Читайте внимательнее, прежде чем вешать ярлыки.диспетчеризация внешних запросов запрещена. Разрешены только внутренние, т.е. напрямую из кода
Неет, сущность и технология вещи абсолютно разные.Так что вы по сути приравняли виджет(что вы там понимаете) к системе форвардинга запросов и многослойной архитектуре
Нормализуем вопросы, составим их более абстрактно:Меню, обычно - это не совсем простой код, и по-хорошему, оно бы должно быть оформлено отдельный блок в шаблоне... со своим собственным контроллером(?), который получает данные для построения меню.
Вопросы:
Где этот контроллер должен быть расположен?
Откуда вызываться?
спасибо, вы открыли нам глаза на активные шаблоны, недостатки которых тут уже обсудили две страницы назад.напрямую из шаблона
Разница в данном случае заключается в уровне на котором происходит обращение к отвественному за генерацию этого компонента. Если у вас общий UI компонент для всего приложения, например, меню - обращение идет на уровне приложения. Если это UI компонент, который используется в только на некоторых страницах, например, блок с последними новостями, вызов произойдет уже на уровне ниже, например на уровне экшена.Между пунктами 1-4 не вижу большой разницы.
Что хочет получить клиент в качестве ответа, UI (я подразумеваю html) или сырые данные в каком-либо формате, например JSON, должно быть известно заранее. Поэтому организовать "вилку", чтобы предотвратить лишние вычисления не представляет труда.Скажем, какой-то из экшенов возвращает не хтмл страницу, а джейсон. И нафига контроллеру при этом рендерить меню - загадка.
С чего вы взяли, что он должен это делать? Зачем? Это компонент, который находится в лэйауте, который (лэйаут) предположительно общий для всего сайта/приложения. Значит и вычислять его надо где-то на этом уровне, а не в каком-то там модуле. Модуль и без меню проживет.С какой стати вообще модуль user
не владею вашей терминологией. Прочитал две страницы назад , но так и не понял, что точно вы подразумевате под этим понятием.вы открыли нам глаза на активные шаблоны,
Ragazzo, вы местный остряк/шутник? Не знаю за кого вы меня принимаете, но раньше меня тут не было.Ну вот он опять зарегался под другим ником мда...
Именно в этом.Вот организовывать вычисления в шаблоне или впихивать логику/ветвление - вот это плохо.
Честно не понимаю, в чем у вас затык.
Они же вместе сосуществуют в удобном варианте! Из базового шаблона его и вызывают.Из этой мысли я делаю такой вывод, что "супервизор" AKA "контроллер главного шаблона" однозначно нужен.
Попытки заменить контроллер главного шаблона такими вещами, как
- активным шаблоном
- наследованием
суть паллиатив и проблему не решают.
Не понял, кто вместе, но зато сформулировал свои претензии к перечисленным подходам:Не понял это:
не понял, чем это отличается от (2)4) Парсинг шаблона в результате которого у нас появляется список активных шаблонов(виджетов).
Здесь описан активный шаблон, в его однопроходной (<?=insert('news')?>) или двухпроходной ({INSERT news}) реализации.У меня если в шаблоне стоит например <?=insert('news')?> или {INSERT news},
Очень хороший вопрос, прямо в точку.Все-таки может кто-нибудь снизойдет, очень хочется понять, что такое "контроллер шаблона".
тоже требует своего контроллера!стоит например <?=insert('news')?> или {INSERT news}
Тем, что парсинг выполняется один раз после изменения шаблонов (на этапе трансляции шаблонов). результат парсинга сохраняется и используется при последующих вызовах. В двухпроходном методе предполагалось выполнять первый проход каждый раз.не понял, чем это отличается от (2)
Тогда что-то опять не так у нас с терминологией. news.biz.php [у мнея] является моделью, в нем стот грубо говоря SELECT * from news.Для news.tpl.php контроллером является news.biz.php.
Ну так <?=insert('news')?> находится в body.tpl.php, a ему соответсвует body.biz.php.Но я в этом топике говорю о том, что все почему-то забывают, что шаблон, в котором стоит например <?=insert('news')?> или {INSERT news} тоже требует своего контроллера!
А чем занимается этот body.biz.php?Ну так <?=insert('news')?> находится в body.tpl.php, a ему соответсвует body.biz.php.
Этого не может быть.Тогда что-то опять не так у нас с терминологией. news.biz.php [у мнея] является моделью, в нем стот грубо говоря SELECT * from news.