Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 05 Окт 2009 20:11:03 Заголовок сообщения: cakephp routes |
|
|
На главной странице нужно, например, вывести категории, список товаров и еще что-либо. Категории и товары это разные модули. у них свои контроллеры и т.д. В роутах можно прописать только один контроллер для каждого адреса. Как можно собрать все воедино на главной странице и на других? Например, список категорий нужен везде |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 05 Окт 2009 22:03:53 Заголовок сообщения: |
|
|
Читайте внимательно раздел, где описан роутер, и будет вам счастье |
|
Вернуться к началу |
|
|
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 05 Окт 2009 22:47:22 Заголовок сообщения: |
|
|
Router::connect(
'URL',
array('paramName' => 'defaultValue'),
array('paramName' => 'matchingRegex')
)
вот в общем виде роут. можно прописать только один контроллер и один метод. а мне допустим нужно и категории вывести и товары и данные из корзины и т.д. как в этом случае быть?
перечитывал про роуты 100 раз на оф сайте. этого момента так и не нашел |
|
Вернуться к началу |
|
|
justiam
цитировать
Зарегистрирован: 28 Июл 2008 00:49:33 Сообщения: 24
|
Добавлено: 06 Окт 2009 06:48:07 Заголовок сообщения: |
|
|
Вот твой роутер:
Код: | Router::connect('/', array('controller' => 'goods','action' => 'summary'));
|
В контроллере goods подключаешь модели Good, Category, Basket (или как там называется корзина?):
Код: | var $uses = array('Good','Category','Basket'); |
В действии summary забираешь и обрабатываешь нужные тебе записи из таблиц Goods, Categories и Baskets - и передаешь в вид:
Код: | $this->set('goods', $goods);
$this->set('categories', $categories);
$this->set('basket', $basket); |
В виде /views/goods/summary.ctp отображаешь в нужном тебе виде данные из переменных (массивов, наверно) $goods, $categories и $basket.
Вроде так. |
|
Вернуться к началу |
|
|
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 06 Окт 2009 18:41:51 Заголовок сообщения: |
|
|
думаю это вариант. спасибо! |
|
Вернуться к началу |
|
|
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 07 Ноя 2009 19:55:57 Заголовок сообщения: |
|
|
это не совсем то что нужно оказалось. допустим есть раздел магазин и куча других. в разделе магазин нужно чтобы всегда отображалось дерево категорий. в виде index я допустим вывожу это дерево и товары. потом перехожу в раздел добавить товар. там уже будет вид add. и опять придется копировать дерево. это ведь идиотизм. как можно вызвать несколько разных видов за раз? |
|
Вернуться к началу |
|
|
Hektor
цитировать
Зарегистрирован: 07 Сен 2008 12:26:43 Сообщения: 15 Откуда: Omsk
|
Добавлено: 07 Ноя 2009 20:17:23 Заголовок сообщения: |
|
|
Если я правильно понимаю, то Вам нужно для каждого раздела с идентичными модулями создать общий шаблон (layout).
Тогда в контроллере (shop_controller.php) в функции beforeRender указываете
Код: |
$this->layout = 'shop';
|
А в shop.ctp вставляем дерево, допустим как элемент:
Код: |
$this->element(tree);
|
|
|
Вернуться к началу |
|
|
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 08 Ноя 2009 07:03:45 Заголовок сообщения: |
|
|
но ведь есть же еще элементы общие для всего сайта. шапка, низ, менюшка основная. если сменю layout то придется все эти повторяющиеся элементы копировать во все такие подlayoutы |
|
Вернуться к началу |
|
|
Hektor
цитировать
Зарегистрирован: 07 Сен 2008 12:26:43 Сообщения: 15 Откуда: Omsk
|
Добавлено: 08 Ноя 2009 23:26:58 Заголовок сообщения: |
|
|
тогда в layout выкручиваемся.
Код: |
if($this->params['controller'] == 'shop'){
$this->element(tree);
}
|
таких примитивных примеров могу кучу привести. |
|
Вернуться к началу |
|
|
Гость
цитировать
|
Добавлено: 09 Ноя 2009 12:56:51 Заголовок сообщения: |
|
|
например? |
|
Вернуться к началу |
|
|
foma19
цитировать
Зарегистрирован: 05 Окт 2009 20:10:13 Сообщения: 10
|
Добавлено: 10 Ноя 2009 13:37:24 Заголовок сообщения: |
|
|
а как можно соединить два модуля в одном? есть категории, товары и корзина. в них уже прописаны связи и т.д. весь код тоже есть. но вот мне нужно это все объединить в одном модуле shop. не писать же все функции, используемые в 3-х модулях в одном shop. как вообще обычно это делают? |
|
Вернуться к началу |
|
|
Hektor
цитировать
Зарегистрирован: 07 Сен 2008 12:26:43 Сообщения: 15 Откуда: Omsk
|
Добавлено: 12 Ноя 2009 08:33:24 Заголовок сообщения: |
|
|
Anonymous писал(а): | например? |
Один пример я уже привел:
Если весь магазин "стоит" на одном контроллере, то проверяем params['controller'] и, при необходимости, выводим элемент.
По моему же глубокому убеждению всё должно быть оформлено в виде шаблонов под каждый конкретный случай. Один шаблон для множества страниц. В Вашем случае шаблон для конкретного раздела. Тем самым Вы сэкономите на производительности. Представьте себе, что у вас один layout для всех разделов. И он должен "подстроиться" под требования раздела. Если магазин, то вывести категории магазина, если архив статей - то категории архива... А разделив на шаблоны и подшаблоны заставляем движок только обрабатывать конкретный файл меньшим количеством циклов и условий. Это ощутимо при посещаемости сайта в несколько тыс. чел. в сутки.
IMHO |
|
Вернуться к началу |
|
|
|