последнии новости, статьи, товары - как реализовать на одной странице?

5 views
Skip to first unread message

site...@gmail.com

unread,
Jan 26, 2007, 12:43:37 PM1/26/07
to cake-php-ru
Вот стала задача реализовать
своеобразную сводку о n последних
новостей, статей и товаров.. Для
каждого по отдельности модули и
контролеры, также как вывод уже сделан,
а вот как совместить информацию с
нескольких сразу пока непонятно =(

Сергей Егоров

unread,
Jan 30, 2007, 3:04:06 PM1/30/07
to cake-...@googlegroups.com
Делаешь контроллер который без модели работает и в нем вызываешь по порядку все свои контроллеры через requestAction(). Вывод совмещаеш. Хотя это немного не по MVC imho

Michael Chernyakoff

unread,
Jan 30, 2007, 3:57:04 PM1/30/07
to cake-...@googlegroups.com
On Tue, 30 Jan 2007 23:04:06 +0300, Сергей Егоров <rustl...@mail.ru>
wrote:

> Делаешь контроллер который без модели работает и в нем вызываешь по
> порядку все свои контроллеры через requestAction(). Вывод совмещаеш.
> Хотя это немного не по MVC imho
>

еще варианты:
1) создать модель с объявлением var $useTable = false;, работающую со
всеми таблицами, и обращаться к ней.
2) создать универсальный компонент,
в компонент передавать: имя таблицы, имя столбца по которому производится
сортировка и требуемое количество новостей.

Hellbot

unread,
Jan 31, 2007, 7:01:13 AM1/31/07
to cake-php-ru
А можно капельку подробнее про вариант номер 1 ?
Мне не совсем понятно как потом эту модель использовать.

On 30 Янв., 23:57, "Michael Chernyakoff" <chernyak...@gmail.com>
wrote:
> On Tue, 30 Jan 2007 23:04:06 +0300, Сергей Егоров <rustler2...@mail.ru>

Michael Chernyakoff

unread,
Feb 1, 2007, 4:31:24 PM2/1/07
to cake-...@googlegroups.com
On Wed, 31 Jan 2007 15:01:13 +0300, Hellbot <g.he...@gmail.com> wrote:

> А можно капельку подробнее про вариант номер 1 ?
> Мне не совсем понятно как потом эту модель использовать.
>

как-то так:

в контроллере

$LatestItems=&new LatestItems();
$this->set('latest_news',$LatestItems->find_news(10));
$this->set('latest_articles',$LatestItems->find_articles(5));
$this->set('latest_comments',$LatestItems->find_comments(15));


если модель используется в нескольких методах контроллера, то
нужно вместо:

$LatestItems=&new LatestItems();

указать в начале класса:

var $uses=array('LatestItems');

и обращаться к модели так: $this->LatestItems

Hellbot

unread,
Feb 2, 2007, 7:42:41 AM2/2/07
to cake-php-ru
Тогда вопрос, с разными таблицами учим ее работать самостоятельно ? Не
используя встроеные средства.
Я правильно понимаю ?

Michael Chernyakoff

unread,
Feb 2, 2007, 5:50:57 PM2/2/07
to cake-...@googlegroups.com
On Fri, 02 Feb 2007 15:42:41 +0300, Hellbot <g.he...@gmail.com> wrote:

> Тогда вопрос, с разными таблицами учим ее работать самостоятельно ? Не
> используя встроеные средства.
> Я правильно понимаю ?

Да.
Я за метод query. И понятный SQL. Без HABTM, но с LEFT JOIN.
Минус этого подхода в том что могут быть проблемы при переходе на другой
двиг баз данных -- mssql или postgres. Но я уже много лет работаю c MySQL
и не вижу причин что-то менять.

В принципе вышесказанное относится к спору: так ли уж нужен
Object-relational mapping (ORM)?
Вот ссылка на обсуждение вопроса в phpclub --
http://phpclub.ru/talk/showthread.php?threadid=91066

p.s. Я вот решил, что мне ORM не нужен. И перенес разработку новых
проектов на CodeIgniter.

vla...@gmail.com

unread,
Feb 3, 2007, 3:52:54 AM2/3/07
to cake-php-ru
2Michael спасибо за интересные ссылки.

Мог бы подробнее рассказать о CodIgniter - общем и различии?
> проектов на CodeIgniter.

Алексей Савельев

unread,
Feb 3, 2007, 11:23:49 AM2/3/07
to cake-...@googlegroups.com
vgc> 2Michael спасибо за интересные ссылки.
vgc> Мог бы подробнее рассказать о CodIgniter - общем и различии?
Присоединяюсь к вопросу. Достаточно часто читаю сообщения о переходе с
Cake на CodIgniter.

С уважением,
А.Савельев


Jtraub

unread,
Feb 3, 2007, 11:17:23 PM2/3/07
to cake-php-ru
> Мог бы подробнее рассказать о CodIgniter - общем и различии?
Есть одна большая причина по которой выбирать CodeIgniter не
следует :-) Разработка ведется в закрытом режиме. И это самое главное.
У CakePHP есть багтрекер + репозитарий открытый, да и команда core
developers выглядит посерьезнее, чем у CI. Т.е. будущее Cake выглядит
более радужно.

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

Jtraub

unread,
Feb 3, 2007, 11:20:57 PM2/3/07
to cake-php-ru
> Делаешь контроллер который без модели работает и в нем вызываешь по порядку все свои контроллеры через requestAction(). Вывод совмещаеш. Хотя это немного не по MVC imho
А если сделать контроллер, который будет работать со всеми моделями?

Сергей Егоров

unread,
Feb 5, 2007, 4:48:48 AM2/5/07
to cake-...@googlegroups.com
CI паршива IMHO - MVC boundary пробить там нефиг делать.
Как увидел что они генерацию view из контроллера явно вызывают в самых первых примерах - так и забил на него

Сергей Егоров

unread,
Feb 5, 2007, 4:55:12 AM2/5/07
to cake-...@googlegroups.com
> > Делаешь контроллер который без модели работает и в нем вызываешь по порядку все свои контроллеры через requestAction(). Вывод совмещаеш. Хотя это немного не по MVC imho

> А если сделать контроллер, который будет работать со всеми моделями?

Можно и так - так будет честно.
Можно недостающие модели подгрузить в нужный action.
Можно query сделать.
Если оракл - то можно view сделать и к нему модель.

Если view рендерити через свои хелперы то проблем нету

--
Sergey

Denis Dheremetov

unread,
Feb 5, 2007, 4:58:56 AM2/5/07
to cake-...@googlegroups.com

> CI паршива IMHO - MVC boundary пробить там нефиг делать.
> Как увидел что они генерацию view из контроллера явно вызывают в самых
> первых примерах - так и забил на него

Я тое считаю что CodIgniter нифига полезного не делает, ну разве что код
помогает структурировать, для тех у кого вообще с фантазией туго.

--
Denis Sheremetov

djVirus

unread,
Feb 27, 2007, 2:43:20 AM2/27/07
to cake-php-ru
Я использую другой вариант, не через requestAction. Все данные готовлю
в AppController-е (либо в текущем action-е, если блок выводится не
везде), затем в шаблоне лайаута пользуюсь элементами, передавая им
данные. Это простой способ. Если нужно сделать портальную структуру,
динамически включать-выключать блоки, тогда requestAction. Или, ещё
сложнее, под каждый блок создаётся собственный класс с рендером, в
AppController формирую список проинициализированных объектов-блоков
для каждой колонки и в лайауте (или в элементе) в цикле вызываю рендер
каждого объекта списка.

Reply all
Reply to author
Forward
0 new messages