Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Вопрос по HMVC http://forum.kohanaframework.su/viewtopic.php?f=31&t=786 |
Страница 1 из 1 |
Автор: | alex_han [ 27 дек 2013, 18:56 ] |
Заголовок сообщения: | Вопрос по HMVC |
Всем привет! Есть контроллер-список (родитель) со своим view и 3 вида контроллеров-элементов (дети) со своими view каждый. В контроллере-списке вызывается создание контроллеров-элементов и потом вставляются в представление родителя. Формирование списка идет на основе запроса к БД. Если делать запрос на уровне родителя, то тогда придется передавать как-то информацию контроллеру-ребенку (через route не проходит, из-за слишком длинной строки параметра- много данных). А если вызывать обращение к базе из контроллера элемента(что правильно для HMVC и объектного подхода), то будет слишком много обращений к базе данных, т.к. данные буду доставаться по одной записи, а не все за один select (что увеличит время формирования страницы и это не есть хорошо). Таким образом вопрос в следующем, можно ли передавать данные между двумя контроллерами не используя route (для первого варианта)? или может кто-то может предложить свой вариант как это реализовано у вас? Заранее спасибо. Алекс |
Автор: | Sergey [ 27 дек 2013, 19:04 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
А опишите реальный пример работы этого дела |
Автор: | alex_han [ 27 дек 2013, 19:37 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
Пример 1 (интернет магазин). Контроллер-родитель НОВОСТЕЙ имеет возможность отображать список - скидок, акций, новостей, статьи. У каждой из этих видов информации свой view, Но запрос из базы выполняется один для получения последних n-новостей. Алекс. |
Автор: | WinterSilence [ 27 дек 2013, 20:58 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
Основной контроллер(новости) вызывает подзапросом (Request, а не Route) контроллер акции и передает ему параметром или post\get кол-во требуемые новостей , в ответ получает от него список акций json массивом, ну а дальше по накатанным рельсам ... profit! |
Автор: | Sergey [ 27 дек 2013, 21:14 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
Я немного не понял, почему вы не хотите создать одну базовую модель для всех типов материалов и одну таблицу для всех материалов любого типа. Например: Код:
Каждый материал в табличке posts мог бы иметь поле type, в котором вы пишите например discount, promo, news, post и т.д. У каждой модели $_table_name всегда должен быть 'posts', а вот $_post_type свой, ну и соответственно все модели должны наследоваться от Post. Далее просто, в Post пишем: Код:
Остальные методы класса Post аналогично расширяются Код:
Расширяется на раз-два. В общем то тут одна кописпаста, думать особо не надо |
Автор: | alex_han [ 27 дек 2013, 23:11 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
Да дело не в таблице и модели, это и так один класс с одной моделью на одну таблицу. Дело в представлениях. Для каждого типа создан свой контроллер только из-за представлений!! Каждый тип новостей должен отображаться по своему. Городить сложный view мне не хотелось - один универсальный с case оператором. Поэтому и были созданы контроллеры для каждого типа, но обращаются они все к одной модели. По поводу route я был неправ. Да идет вызов каждого типа через Код:
Но вопрос-то не в этом. Как можно оптимизировать код так, чтобы сделать один запрос к базе из родительского контроллера, а воспользоваться i-тым элементом из result-set модели в дочернем элементе? |
Автор: | WinterSilence [ 29 дек 2013, 08:32 ] |
Заголовок сообщения: | Re: Вопрос по HMVC |
Цитата: Для каждого типа создан свой контроллер только из-за представлений А почему не используешь несколько представлений в базовом шаблоне? Вообще сложно понять о чем ты, выкладывай хоть какие-то куски кода.. |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |